stat: revert %X-%Y-%Z change; use e.g., %:X to print fractional seconds
authorJim Meyering <meyering@redhat.com>
Thu, 21 Oct 2010 16:41:24 +0000 (18:41 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 3 Nov 2010 12:10:50 +0000 (13:10 +0100)
commitdb42ae787de7165ee3a1bbf8d4988d0698d7c1df
treeedda302f85ea9c7cd29384d50b260cbfbafb6e56
parent272f8bf0ac23d7c9ac96f3cb53e114cd3566875b
stat: revert %X-%Y-%Z change; use e.g., %:X to print fractional seconds

This reverts part of the recent commit 9069af45,
"stat: print timestamps to full resolution", which made %X, %Y, %Z
print floating point numbers.  We prefer to retain portability of
%X, %Y and %Z uses, while still providing access to full-resolution
time stamps via modified format strings.  Also make the new
%W consistent.
* src/stat.c: Include "xstrtol.h".
(print_it): Accept a new %...:[XYZ] format directive,
e.g., %:X, to print the nanoseconds portion of the corresponding time.
For example, %3.3:Y prints the zero-padded, truncated, milliseconds
part of the time of last modification.
(print_it): Update print_func signature to match.
(neg_to_zero): New helper function.
(epoch_time): Remove function; replace with...
(epoch_sec): New function; use timetostr.
(out_ns): New function.  Use "09" only when no other modifier
is specified.
(print_statfs): Change type of "m" to unsigned int,
now that it must accommodate values larger than 255.
(print_stat): Likewise.
Map :X to a code of 'X' + 256.  Likewise for Y, Z and W.
(usage): Update.
* tests/touch/60-seconds: Use %Y.%:Y in place of %Y.
* tests/misc/stat-nanoseconds: New file.
* tests/Makefile.am (TESTS): Add it.
* NEWS (Changes in behavior): Mention this.
With improvements by Pádraig Brady.
Thanks to Andreas Schwab for raising the issue.
NEWS
doc/coreutils.texi
src/stat.c
tests/Makefile.am
tests/misc/stat-nanoseconds [new file with mode: 0755]
tests/touch/60-seconds