diff options
author | Eric Andersen | 2000-11-29 22:01:42 +0000 |
---|---|---|
committer | Eric Andersen | 2000-11-29 22:01:42 +0000 |
commit | 7b5d59464fa19dbb15620928cc22c448206489c2 (patch) | |
tree | b5bbc50d742a31cf498e138686cae67659d2c251 | |
parent | cf1189f5a709ed52f862775af63dbf75b8124ccd (diff) | |
download | busybox-7b5d59464fa19dbb15620928cc22c448206489c2.zip busybox-7b5d59464fa19dbb15620928cc22c448206489c2.tar.gz |
Apply a patch from Larry Doolittle <ldoolitt@recycle.lbl.gov> 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.
-rw-r--r-- | applets/usage.c | 7 | ||||
-rw-r--r-- | coreutils/date.c | 108 | ||||
-rw-r--r-- | date.c | 108 | ||||
-rw-r--r-- | usage.c | 7 |
4 files changed, 100 insertions, 130 deletions
diff --git a/applets/usage.c b/applets/usage.c index 93fbf42..a919a58 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 a8f0d7c..7e42167 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) { - - *tm_time = itm_time; - return (tm_time); - - } 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 (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) { - - ktm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ktm_time; - return (tm_time); - - } 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) { - - ltm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ltm_time; - return (tm_time); - - } 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) { - - 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); + if (t=*tm_time,sscanf(t_string, "%d:%d:%d", + &t.tm_hour, &t.tm_min, &t.tm_sec) == 3) { + /* no adjustments needed */ - } + } else if (t=*tm_time,sscanf(t_string, "%d:%d", + &t.tm_hour, &t.tm_min) == 2) { + /* no adjustments needed */ + + + } 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) { + + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ + + } 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) { + + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - fatalError(invalid_date, t_string); + } 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) { + + t.tm_year -= 1900; /* Adjust years */ + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ + + } 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); + } + *tm_time = t; + return (tm_time); } @@ -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) { - - *tm_time = itm_time; - return (tm_time); - - } 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 (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) { - - ktm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ktm_time; - return (tm_time); - - } 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) { - - ltm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - *tm_time = ltm_time; - return (tm_time); - - } 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) { - - 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); + if (t=*tm_time,sscanf(t_string, "%d:%d:%d", + &t.tm_hour, &t.tm_min, &t.tm_sec) == 3) { + /* no adjustments needed */ - } + } else if (t=*tm_time,sscanf(t_string, "%d:%d", + &t.tm_hour, &t.tm_min) == 2) { + /* no adjustments needed */ + + + } 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) { + + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ + + } 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) { + + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ - fatalError(invalid_date, t_string); + } 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) { + + t.tm_year -= 1900; /* Adjust years */ + t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ + + } 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); + } + *tm_time = t; + return (tm_time); } @@ -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 |