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.