diff options
-rw-r--r-- | coreutils/date.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/coreutils/date.c b/coreutils/date.c index 7d14ec3..46d2e10 100644 --- a/coreutils/date.c +++ b/coreutils/date.c @@ -114,6 +114,11 @@ static struct tm *date_conv_ftime(struct tm *tm_time, const char *t_string) return (tm_time); } +#define DATE_OPT_RFC2822 0x01 +#define DATE_OPT_SET 0x02 +#define DATE_OPT_UTC 0x04 +#define DATE_OPT_DATE 0x08 +#define DATE_OPT_REFERENCE 0x10 int date_main(int argc, char **argv) { @@ -121,7 +126,6 @@ int date_main(int argc, char **argv) char *date_fmt = NULL; char *t_buff; int set_time; - int rfc822; int utc; int use_arg = 0; time_t tm; @@ -143,37 +147,35 @@ int date_main(int argc, char **argv) , &isofmt_arg #endif ); - rfc822 = opt & 1; - set_time = opt & 2; - utc = opt & 4; - if(utc) { - if (putenv("TZ=UTC0") != 0) - bb_error_msg_and_die(bb_msg_memory_exhausted); + set_time = opt & DATE_OPT_SET; + utc = opt & DATE_OPT_UTC; + if ((utc) && (putenv("TZ=UTC0") != 0)) { + bb_error_msg_and_die(bb_msg_memory_exhausted); } - use_arg = opt & 8; + use_arg = opt & DATE_OPT_DATE; if(opt & 0x80000000UL) - bb_show_usage(); + bb_show_usage(); #ifdef CONFIG_FEATURE_DATE_ISOFMT - if(opt & 16) { - if (!isofmt_arg) - ifmt = 1; - else { + if(opt & DATE_OPT_REFERENCE) { + if (!isofmt_arg) { + ifmt = 1; + } else { int ifmt_len = bb_strlen(isofmt_arg); - if ((ifmt_len <= 4) + if ((ifmt_len <= 4) && (strncmp(isofmt_arg, "date", ifmt_len) == 0)) { - ifmt = 1; - } else if ((ifmt_len <= 5) - && (strncmp(isofmt_arg, "hours", ifmt_len) == 0)) { - ifmt = 2; - } else if ((ifmt_len <= 7) - && (strncmp(isofmt_arg, "minutes", ifmt_len) == 0)) { - ifmt = 3; - } else if ((ifmt_len <= 7) - && (strncmp(isofmt_arg, "seconds", ifmt_len) == 0)) { - ifmt = 4; - } + ifmt = 1; + } else if ((ifmt_len <= 5) + && (strncmp(isofmt_arg, "hours", ifmt_len) == 0)) { + ifmt = 2; + } else if ((ifmt_len <= 7) + && (strncmp(isofmt_arg, "minutes", ifmt_len) == 0)) { + ifmt = 3; + } else if ((ifmt_len <= 7) + && (strncmp(isofmt_arg, "seconds", ifmt_len) == 0)) { + ifmt = 4; } + } if (!ifmt) { bb_show_usage(); } @@ -197,11 +199,8 @@ int date_main(int argc, char **argv) tm_time.tm_sec = 0; tm_time.tm_min = 0; tm_time.tm_hour = 0; - } - - /* Process any date input to UNIX time since 1 Jan 1970 */ - if (date_str != NULL) { + /* Process any date input to UNIX time since 1 Jan 1970 */ if (strchr(date_str, ':') != NULL) { date_conv_ftime(&tm_time, date_str); } else { @@ -246,7 +245,7 @@ int date_main(int argc, char **argv) default: #endif date_fmt = - (rfc822 + (opt & DATE_OPT_RFC2822 ? (utc ? "%a, %e %b %Y %H:%M:%S GMT" : "%a, %e %b %Y %H:%M:%S %z") : "%a %b %e %H:%M:%S %Z %Y"); |