On 01/10/10 00:32, Eric Blake wrote:
> * src/stat.c (epoch_time): New function.
> (print_stat): Use it for %[WXYZ].
> * NEWS: Document this.
> * tests/touch/60-seconds: Adjust test to match.
> ---
> 
> It bugs me that %x has more information than %X in 'stat --format',
> especially, since we don't support any format modifiers for getting
> at the additional information.  We're already incompatible with
> BSD stat(1) format modifiers, and there is no standard for stat(1),
> so I wasn't too worried about changing the meaning of existing
> modifiers rather than burning new letters just for the nanosecond
> portions.  And now that POSIX 2008 requires nanonsecond resolution
> in stat(2), you could argue that we should always be displaying it.

It looks like ext4 at least supports
nanosecond resolution timestamps

$ date --reference=/ext4/ +%s.%N
1285519989.081870491
$ date --reference=/ext3/ +%s.%N
1266874130.000000000

There is a fair chance that scripts may break
that assume %X is an integer.
I'd be all on for it otherwise.
As it is I'm 60:40 for the change.

cheers,
Pádraig.

> 
> +static char * ATTRIBUTE_WARN_UNUSED_RESULT
> +epoch_time (struct timespec t)
> +{
> +  static char str[INT_STRLEN_BOUND (time_t) + sizeof ".NNNNNNNNN"];
> +  if (TYPE_SIGNED (time_t))
> +    sprintf (str, "%" PRIdMAX ".%09lu", (intmax_t) t.tv_sec,
> +             (unsigned long) t.tv_nsec);
> +  else
> +    sprintf (str, "%" PRIuMAX ".%09lu", (uintmax_t) t.tv_sec,
> +             (unsigned long) t.tv_nsec);
> +  return str;

time_t can be a float on weird platforms I think?

cheers,
Pádraig.

Reply via email to