diff options
author | Jim Meyering <jim@meyering.net> | 2004-03-17 10:07:19 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2004-03-17 10:07:19 +0000 |
commit | 11103076722aba896ef11551a25c8e356277da3f (patch) | |
tree | 76b94c9d5605102973b824cf3f0dba5094981101 /src/date.c | |
parent | 553e0746b0b5c8463fab72fdb924bccb85fefb4c (diff) | |
download | coreutils-11103076722aba896ef11551a25c8e356277da3f.tar.xz |
(enum Time_spec): New enum TIME_SPEC_NS.
(time_spec_string, time_spec, show_date): Support it.
(usage): Remove description of -ITIMESPEC, as it's obsolete and
confusing. Mention --iso-8601=ns.
(batch_convert): getline returns ssize_t, not int.
Diffstat (limited to 'src/date.c')
-rw-r--r-- | src/date.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/src/date.c b/src/date.c index 70fb2aed7..c8db77f04 100644 --- a/src/date.c +++ b/src/date.c @@ -54,17 +54,20 @@ enum Time_spec /* display date, hours, and minutes: 1999-03-25T03:23-0500 */ TIME_SPEC_MINUTES, /* display date, hours, minutes, and seconds: 1999-03-25T03:23:14-0500 */ - TIME_SPEC_SECONDS + TIME_SPEC_SECONDS, + /* similar, but display nanoseconds: 1999-03-25T03:23:14,123456789-0500 */ + TIME_SPEC_NS }; static char const *const time_spec_string[] = { - "date", "hours", "minutes", "seconds", 0 + "date", "hours", "minutes", "seconds", "ns", 0 }; static enum Time_spec const time_spec[] = { - TIME_SPEC_DATE, TIME_SPEC_HOURS, TIME_SPEC_MINUTES, TIME_SPEC_SECONDS + TIME_SPEC_DATE, TIME_SPEC_HOURS, TIME_SPEC_MINUTES, TIME_SPEC_SECONDS, + TIME_SPEC_NS }; /* The name this program was run with, for error messages. */ @@ -125,11 +128,10 @@ Display the current time in the given FORMAT, or set the system date.\n\ \n\ -d, --date=STRING display time described by STRING, not `now'\n\ -f, --file=DATEFILE like --date once for each line of DATEFILE\n\ - -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 format.\n\ - TIMESPEC=`date' for date only,\n\ - `hours', `minutes', or `seconds' for date and\n\ + --iso-8601[=TIMESPEC] output date/time in ISO 8601 format.\n\ + TIMESPEC=`date' for date only (the default),\n\ + `hours', `minutes', `seconds', or `ns' for date and\n\ time to the indicated precision.\n\ - --iso-8601 without TIMESPEC defaults to `date'.\n\ "), stdout); fputs (_("\ -r, --reference=FILE display the last modification time of FILE\n\ @@ -229,7 +231,6 @@ batch_convert (const char *input_filename, const char *format) int status; FILE *in_stream; char *line; - int line_length; size_t buflen; struct timespec when; @@ -252,17 +253,14 @@ batch_convert (const char *input_filename, const char *format) status = 0; while (1) { - line_length = getline (&line, &buflen, in_stream); + ssize_t line_length = getline (&line, &buflen, in_stream); if (line_length < 0) { /* FIXME: detect/handle error here. */ break; } - when.tv_sec = get_date (line, NULL); - when.tv_nsec = 0; /* FIXME: get_date should set this. */ - - if (when.tv_sec == -1) + if (! get_date (&when, line, NULL)) { if (line[line_length - 1] == '\n') line[line_length - 1] = '\0'; @@ -449,9 +447,7 @@ argument must be a format string beginning with `+'."), } else { - when.tv_sec = get_date (datestr, NULL); - when.tv_nsec = 0; /* FIXME: get_date should set this. */ - valid_date = (when.tv_sec != (time_t) -1); + valid_date = get_date (&when, datestr, NULL); } format = (n_args == 1 ? argv[optind] + 1 : NULL); @@ -494,7 +490,8 @@ show_date (const char *format, struct timespec when) "%Y-%m-%d", "%Y-%m-%dT%H%z", "%Y-%m-%dT%H:%M%z", - "%Y-%m-%dT%H:%M:%S%z" + "%Y-%m-%dT%H:%M:%S%z", + "%Y-%m-%dT%H:%M:%S,%N%z" }; if (format == NULL) |