Mercurial > hg > toybox
changeset 1375:b6645034202b draft
date -r wasn't saving the result in the right variable. (And make date -ur work.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 03 Jul 2014 20:30:52 -0500 |
parents | 739d3fc60f48 |
children | 7dd487ddd7dc |
files | toys/posix/date.c |
diffstat | 1 files changed, 14 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/toys/posix/date.c Thu Jul 03 18:42:44 2014 -0500 +++ b/toys/posix/date.c Thu Jul 03 20:30:52 2014 -0500 @@ -7,7 +7,7 @@ * Note: setting a 2 year date is 50 years back/forward from today, * not posix's hardwired magic dates. -USE_DATE(NEWTOY(date, "d:s:r:u", TOYFLAG_BIN)) +USE_DATE(NEWTOY(date, "d:s:r:u[!dr]", TOYFLAG_BIN)) config DATE bool "date" @@ -96,7 +96,6 @@ { char *setdate = *toys.optargs, *format_string = "%a %b %e %H:%M:%S %Z %Y", *tz = 0; - time_t now = time(NULL); struct tm tm; // We can't just pass a timezone to mktime because posix. @@ -106,19 +105,25 @@ tzset(); } - if (TT.file) { - struct stat st; - - xstat(TT.file, &st); - now = st.st_mtim.tv_sec; - } else if (TT.showdate) { + if (TT.showdate) { setdate = TT.showdate; if (TT.setfmt) { char *s = strptime(TT.showdate, TT.setfmt+(*TT.setfmt=='+'), &tm); if (!s || *s) goto bad_date; } else if (parse_posixdate(TT.showdate, &tm)) goto bad_date; - } else localtime_r(&now, &tm); + } else { + time_t now; + + if (TT.file) { + struct stat st; + + xstat(TT.file, &st); + now = st.st_mtim.tv_sec; + } else now = time(0); + + ((toys.optflags & FLAG_u) ? gmtime_r : localtime_r)(&now, &tm); + } setdate = *toys.optargs; // Fall through if no arguments