mirror of
https://github.com/sheumann/hush.git
synced 2025-02-26 22:29:56 +00:00
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.
This commit is contained in:
parent
cf1189f5a7
commit
7b5d59464f
@ -140,9 +140,10 @@ const char date_usage[] =
|
|||||||
" or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
|
" or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\nDisplays the current time in the given FORMAT, or sets the system date.\n"
|
"\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"
|
"\nOptions:\n\t-R\t\tOutputs RFC-822 compliant date string\n"
|
||||||
"\t-s\tSets time described by STRING\n"
|
"\t-d STRING\tdisplay time described by STRING, not `now'\n"
|
||||||
"\t-u\tPrints or sets Coordinated Universal Time\n"
|
"\t-s\t\tSets time described by STRING\n"
|
||||||
|
"\t-u\t\tPrints or sets Coordinated Universal Time\n"
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
|
@ -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 *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;
|
struct tm t;
|
||||||
|
|
||||||
itm_time = *tm_time;
|
|
||||||
jtm_time = *tm_time;
|
|
||||||
ktm_time = *tm_time;
|
|
||||||
ltm_time = *tm_time;
|
|
||||||
mtm_time = *tm_time;
|
|
||||||
ntm_time = *tm_time;
|
|
||||||
|
|
||||||
/* Parse input and assign appropriately to tm_time */
|
/* Parse input and assign appropriately to tm_time */
|
||||||
|
|
||||||
if (sscanf(t_string, "%d:%d:%d",
|
if (t=*tm_time,sscanf(t_string, "%d:%d:%d",
|
||||||
&itm_time.tm_hour, &itm_time.tm_min, &itm_time.tm_sec) == 3) {
|
&t.tm_hour, &t.tm_min, &t.tm_sec) == 3) {
|
||||||
|
/* no adjustments needed */
|
||||||
|
|
||||||
*tm_time = itm_time;
|
} else if (t=*tm_time,sscanf(t_string, "%d:%d",
|
||||||
return (tm_time);
|
&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;
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d:%d",
|
||||||
return (tm_time);
|
&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",
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
&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 */
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d",
|
||||||
*tm_time = ktm_time;
|
&t.tm_mon,
|
||||||
return (tm_time);
|
&t.tm_mday,
|
||||||
|
&t.tm_hour, &t.tm_min) == 4) {
|
||||||
|
|
||||||
} else if (sscanf(t_string, "%d.%d-%d:%d",
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
<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 */
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d:%d",
|
||||||
*tm_time = ltm_time;
|
&t.tm_year,
|
||||||
return (tm_time);
|
&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",
|
t.tm_year -= 1900; /* Adjust years */
|
||||||
&mtm_time.tm_year,
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
&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 */
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d",
|
||||||
mtm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
&t.tm_year,
|
||||||
*tm_time = mtm_time;
|
&t.tm_mon,
|
||||||
return (tm_time);
|
&t.tm_mday,
|
||||||
|
&t.tm_hour, &t.tm_min) == 5) {
|
||||||
} else if (sscanf(t_string, "%d.%d.%d-%d:%d",
|
t.tm_year -= 1900; /* Adjust years */
|
||||||
&ntm_time.tm_year,
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
&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 {
|
||||||
fatalError(invalid_date, t_string);
|
fatalError(invalid_date, t_string);
|
||||||
|
}
|
||||||
|
*tm_time = t;
|
||||||
|
return (tm_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
90
date.c
90
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 *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;
|
struct tm t;
|
||||||
|
|
||||||
itm_time = *tm_time;
|
|
||||||
jtm_time = *tm_time;
|
|
||||||
ktm_time = *tm_time;
|
|
||||||
ltm_time = *tm_time;
|
|
||||||
mtm_time = *tm_time;
|
|
||||||
ntm_time = *tm_time;
|
|
||||||
|
|
||||||
/* Parse input and assign appropriately to tm_time */
|
/* Parse input and assign appropriately to tm_time */
|
||||||
|
|
||||||
if (sscanf(t_string, "%d:%d:%d",
|
if (t=*tm_time,sscanf(t_string, "%d:%d:%d",
|
||||||
&itm_time.tm_hour, &itm_time.tm_min, &itm_time.tm_sec) == 3) {
|
&t.tm_hour, &t.tm_min, &t.tm_sec) == 3) {
|
||||||
|
/* no adjustments needed */
|
||||||
|
|
||||||
*tm_time = itm_time;
|
} else if (t=*tm_time,sscanf(t_string, "%d:%d",
|
||||||
return (tm_time);
|
&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;
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d:%d",
|
||||||
return (tm_time);
|
&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",
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
&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 */
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d",
|
||||||
*tm_time = ktm_time;
|
&t.tm_mon,
|
||||||
return (tm_time);
|
&t.tm_mday,
|
||||||
|
&t.tm_hour, &t.tm_min) == 4) {
|
||||||
|
|
||||||
} else if (sscanf(t_string, "%d.%d-%d:%d",
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
<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 */
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d:%d",
|
||||||
*tm_time = ltm_time;
|
&t.tm_year,
|
||||||
return (tm_time);
|
&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",
|
t.tm_year -= 1900; /* Adjust years */
|
||||||
&mtm_time.tm_year,
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
&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 */
|
} else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d",
|
||||||
mtm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
&t.tm_year,
|
||||||
*tm_time = mtm_time;
|
&t.tm_mon,
|
||||||
return (tm_time);
|
&t.tm_mday,
|
||||||
|
&t.tm_hour, &t.tm_min) == 5) {
|
||||||
} else if (sscanf(t_string, "%d.%d.%d-%d:%d",
|
t.tm_year -= 1900; /* Adjust years */
|
||||||
&ntm_time.tm_year,
|
t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */
|
||||||
&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 {
|
||||||
fatalError(invalid_date, t_string);
|
fatalError(invalid_date, t_string);
|
||||||
|
}
|
||||||
|
*tm_time = t;
|
||||||
|
return (tm_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
7
usage.c
7
usage.c
@ -140,9 +140,10 @@ const char date_usage[] =
|
|||||||
" or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
|
" or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\nDisplays the current time in the given FORMAT, or sets the system date.\n"
|
"\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"
|
"\nOptions:\n\t-R\t\tOutputs RFC-822 compliant date string\n"
|
||||||
"\t-s\tSets time described by STRING\n"
|
"\t-d STRING\tdisplay time described by STRING, not `now'\n"
|
||||||
"\t-u\tPrints or sets Coordinated Universal Time\n"
|
"\t-s\t\tSets time described by STRING\n"
|
||||||
|
"\t-u\t\tPrints or sets Coordinated Universal Time\n"
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user