From db42ae787de7165ee3a1bbf8d4988d0698d7c1df Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Thu, 21 Oct 2010 18:41:24 +0200 Subject: stat: revert %X-%Y-%Z change; use e.g., %:X to print fractional seconds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'NEWS') diff --git a/NEWS b/NEWS index dcb974528..596d2ec14 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,19 @@ GNU coreutils NEWS -*- outline -*- cp --attributes-only now completely overrides --reflink. Previously a reflink was needlessly attempted. + stat's %X, %Y, and %Z directives once again print only the integer + part of seconds since the epoch. This reverts a change from + coreutils-8.6, that was deemed unnecessarily disruptive. To obtain + the nanoseconds portion corresponding to %X, you may now use %:X. + I.e., to print the floating point number of seconds using maximum + precision, use this format string: %X.%:X. Likewise for %Y, %Z and %W. + + stat's new %W format directive would print floating point seconds. + However, with the above change to %X, %Y and %Z, we've made %W work + the same way: %W now expands to seconds since the epoch (or 0 when + not supported), and %:W expands to the nanoseconds portion, or to + 0 if not supported. + * Noteworthy changes in release 8.6 (2010-10-15) [stable] -- cgit v1.2.3-54-g00ecf