From 7b5d59464fa19dbb15620928cc22c448206489c2 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 29 Nov 2000 22:01:42 +0000 Subject: [PATCH] Apply a patch from Larry Doolittle to close bug 1069. This shaves about 100 bytes from the executable, and about 200 bytes of heap usage. Also document the "-d" option in the usage message. --- applets/usage.c | 7 ++-- coreutils/date.c | 90 ++++++++++++++++++++---------------------------- date.c | 90 ++++++++++++++++++++---------------------------- usage.c | 7 ++-- 4 files changed, 82 insertions(+), 112 deletions(-) diff --git a/applets/usage.c b/applets/usage.c index 93fbf42b9..a919a58f7 100644 --- a/applets/usage.c +++ b/applets/usage.c @@ -140,9 +140,10 @@ const char date_usage[] = " or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n" #ifndef BB_FEATURE_TRIVIAL_HELP "\nDisplays the current time in the given FORMAT, or sets the system date.\n" - "\nOptions:\n\t-R\tOutputs RFC-822 compliant date string\n" - "\t-s\tSets time described by STRING\n" - "\t-u\tPrints or sets Coordinated Universal Time\n" + "\nOptions:\n\t-R\t\tOutputs RFC-822 compliant date string\n" + "\t-d STRING\tdisplay time described by STRING, not `now'\n" + "\t-s\t\tSets time described by STRING\n" + "\t-u\t\tPrints or sets Coordinated Universal Time\n" #endif ; #endif diff --git a/coreutils/date.c b/coreutils/date.c index a8f0d7ced..7e4216768 100644 --- a/coreutils/date.c +++ b/coreutils/date.c @@ -74,73 +74,57 @@ struct tm *date_conv_time(struct tm *tm_time, const char *t_string) struct tm *date_conv_ftime(struct tm *tm_time, const char *t_string) { - struct tm itm_time, jtm_time, ktm_time, ltm_time, mtm_time, ntm_time; - - itm_time = *tm_time; - jtm_time = *tm_time; - ktm_time = *tm_time; - ltm_time = *tm_time; - mtm_time = *tm_time; - ntm_time = *tm_time; + struct tm t; /* Parse input and assign appropriately to tm_time */ - if (sscanf(t_string, "%d:%d:%d", - &itm_time.tm_hour, &itm_time.tm_min, &itm_time.tm_sec) == 3) { + if (t=*tm_time,sscanf(t_string, "%d:%d:%d", + &t.tm_hour, &t.tm_min, &t.tm_sec) == 3) { + /* no adjustments needed */ - *tm_time = itm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d:%d", + &t.tm_hour, &t.tm_min) == 2) { + /* no adjustments needed */ - } else if (sscanf(t_string, "%d:%d", - &jtm_time.tm_hour, &jtm_time.tm_min) == 2) { - *tm_time = jtm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d:%d", + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, + &t.tm_min, &t.tm_sec) == 5) { - } else if (sscanf(t_string, "%d.%d-%d:%d:%d", - &ktm_time.tm_mon, - &ktm_time.tm_mday, - &ktm_time.tm_hour, - &ktm_time.tm_min, &ktm_time.tm_sec) == 5) { + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - ktm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ktm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d", + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, &t.tm_min) == 4) { - } else if (sscanf(t_string, "%d.%d-%d:%d", - <m_time.tm_mon, - <m_time.tm_mday, - <m_time.tm_hour, <m_time.tm_min) == 4) { + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - ltm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ltm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d:%d", + &t.tm_year, + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, + &t.tm_min, &t.tm_sec) == 6) { - } else if (sscanf(t_string, "%d.%d.%d-%d:%d:%d", - &mtm_time.tm_year, - &mtm_time.tm_mon, - &mtm_time.tm_mday, - &mtm_time.tm_hour, - &mtm_time.tm_min, &mtm_time.tm_sec) == 6) { + t.tm_year -= 1900; /* Adjust years */ + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - mtm_time.tm_year -= 1900; /* Adjust years */ - mtm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = mtm_time; - return (tm_time); - - } else if (sscanf(t_string, "%d.%d.%d-%d:%d", - &ntm_time.tm_year, - &ntm_time.tm_mon, - &ntm_time.tm_mday, - &ntm_time.tm_hour, &ntm_time.tm_min) == 5) { - ntm_time.tm_year -= 1900; /* Adjust years */ - ntm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ntm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d", + &t.tm_year, + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, &t.tm_min) == 5) { + t.tm_year -= 1900; /* Adjust years */ + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ + } else { + fatalError(invalid_date, t_string); } - - fatalError(invalid_date, t_string); + *tm_time = t; + return (tm_time); } diff --git a/date.c b/date.c index a8f0d7ced..7e4216768 100644 --- a/date.c +++ b/date.c @@ -74,73 +74,57 @@ struct tm *date_conv_time(struct tm *tm_time, const char *t_string) struct tm *date_conv_ftime(struct tm *tm_time, const char *t_string) { - struct tm itm_time, jtm_time, ktm_time, ltm_time, mtm_time, ntm_time; - - itm_time = *tm_time; - jtm_time = *tm_time; - ktm_time = *tm_time; - ltm_time = *tm_time; - mtm_time = *tm_time; - ntm_time = *tm_time; + struct tm t; /* Parse input and assign appropriately to tm_time */ - if (sscanf(t_string, "%d:%d:%d", - &itm_time.tm_hour, &itm_time.tm_min, &itm_time.tm_sec) == 3) { + if (t=*tm_time,sscanf(t_string, "%d:%d:%d", + &t.tm_hour, &t.tm_min, &t.tm_sec) == 3) { + /* no adjustments needed */ - *tm_time = itm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d:%d", + &t.tm_hour, &t.tm_min) == 2) { + /* no adjustments needed */ - } else if (sscanf(t_string, "%d:%d", - &jtm_time.tm_hour, &jtm_time.tm_min) == 2) { - *tm_time = jtm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d:%d", + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, + &t.tm_min, &t.tm_sec) == 5) { - } else if (sscanf(t_string, "%d.%d-%d:%d:%d", - &ktm_time.tm_mon, - &ktm_time.tm_mday, - &ktm_time.tm_hour, - &ktm_time.tm_min, &ktm_time.tm_sec) == 5) { + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - ktm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ktm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d", + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, &t.tm_min) == 4) { - } else if (sscanf(t_string, "%d.%d-%d:%d", - <m_time.tm_mon, - <m_time.tm_mday, - <m_time.tm_hour, <m_time.tm_min) == 4) { + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - ltm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ltm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d:%d", + &t.tm_year, + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, + &t.tm_min, &t.tm_sec) == 6) { - } else if (sscanf(t_string, "%d.%d.%d-%d:%d:%d", - &mtm_time.tm_year, - &mtm_time.tm_mon, - &mtm_time.tm_mday, - &mtm_time.tm_hour, - &mtm_time.tm_min, &mtm_time.tm_sec) == 6) { + t.tm_year -= 1900; /* Adjust years */ + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - mtm_time.tm_year -= 1900; /* Adjust years */ - mtm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = mtm_time; - return (tm_time); - - } else if (sscanf(t_string, "%d.%d.%d-%d:%d", - &ntm_time.tm_year, - &ntm_time.tm_mon, - &ntm_time.tm_mday, - &ntm_time.tm_hour, &ntm_time.tm_min) == 5) { - ntm_time.tm_year -= 1900; /* Adjust years */ - ntm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ntm_time; - return (tm_time); + } else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d", + &t.tm_year, + &t.tm_mon, + &t.tm_mday, + &t.tm_hour, &t.tm_min) == 5) { + t.tm_year -= 1900; /* Adjust years */ + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ + } else { + fatalError(invalid_date, t_string); } - - fatalError(invalid_date, t_string); + *tm_time = t; + return (tm_time); } diff --git a/usage.c b/usage.c index 93fbf42b9..a919a58f7 100644 --- a/usage.c +++ b/usage.c @@ -140,9 +140,10 @@ const char date_usage[] = " or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n" #ifndef BB_FEATURE_TRIVIAL_HELP "\nDisplays the current time in the given FORMAT, or sets the system date.\n" - "\nOptions:\n\t-R\tOutputs RFC-822 compliant date string\n" - "\t-s\tSets time described by STRING\n" - "\t-u\tPrints or sets Coordinated Universal Time\n" + "\nOptions:\n\t-R\t\tOutputs RFC-822 compliant date string\n" + "\t-d STRING\tdisplay time described by STRING, not `now'\n" + "\t-s\t\tSets time described by STRING\n" + "\t-u\t\tPrints or sets Coordinated Universal Time\n" #endif ; #endif