[Libguestfs] [hivex][PATCH] Increase filetime printing resolution to sub-second
Alex Nelson
ajnelson at cs.ucsc.edu
Wed Dec 14 03:00:41 UTC 2011
On Dec 13, 2011, at 02:04 , Jim Meyering wrote:
> Alex Nelson wrote:
>
>> I tried using the nstrftime function instead of strftime; strftime
>> didn't seem to recognize %N, even when I included gnulib's strftime.h
>> header. Then the %N format added trailing zeroes I wasn't expecting.
>> Unfortunately, the test-strftime.c file didn't include a test for
>> nanosecond-resolution display, so I wasn't sure if this was a problem
>> with my call or the %N specification.
>>
>> I've produced a patch for gnulib to demonstrate what I was missing,
>> attached. Jim, should I submit it to the bug-gnulib mailing list? It
>
> Hi Alex,
>
> Yes, the test case addition would be welcome on bug-gnulib.
Thanks, I've submitted it.
>
>> is an additional test that shows what the actual behavior of nstrftime
>> is, though I don't know if that's what the expected behavior is. I
>> would expect 10 nanoseconds to be reported as "0.00000001" seconds,
>> not "0.000000010".
>
> The %N directive is defined to produce zero-padded nanoseconds.
Ok. I haven't been able to find this with Google; where is it documented?
> As such, it must represent 10 as 000000010, not 00000001.
> If you choose to put that string after a decimal point, you're
> changing the semantics to "fractional seconds", at which
> point you can safely post-process it to remove trailing '0's.
Post-processing to remove 0's seems less efficient to me than not producing the trailing 0's at all. I take it there is no similar nanosecond % directive that prints down to the most significant digit?
>
>> The second attached patch uses nstrftime, and gives funny-looking
>> results. For example, here are the first two mtimes of hivexml's
>> output on hivex/images/large, line 1 for the first version of this
>> patch, line 2 using nstrftime:
>>
>> <hive><mtime>2010-02-02T13:42:52.27Z</mtime><node name="$$$PROTO.HIV"
>> root="1"><mtime>2010-02-02T13:42:44.626Z</mtime>
>> <hive><mtime>2010-02-02T13:42:52.270000000Z</mtime><node
>> name="$$$PROTO.HIV"
>> root="1"><mtime>2010-02-02T13:42:44.626000000Z</mtime>
>>
>> I'm partial to the first version's output.
>
> If you can settle for less resolution, you may want to use e.g., %6N or %3N:
>
> $ date +%T.%3N
> 11:03:00.728
>
> $ date +%T.%6N
> 11:03:01.463570
It's my preference to not restrict the resolution. Come to think about it, this %nN directive could afford to go into that test-strftime program, too. I'll submit another patch once the first one goes through.
Thanks, Jim!
--Alex
More information about the Libguestfs
mailing list