FW: asctime.c
Olson, Arthur David (NIH/NCI)
olsona at dc37a.nci.nih.gov
Tue Jul 27 14:47:44 UTC 2004
-----Original Message-----
From: Robert Elz [mailto:kre at munnari.OZ.AU]
Sent: Tuesday, July 27, 2004 5:24 AM
To: Paul Eggert
Cc: Olson, Arthur David (NIH/NCI); Tz
Subject: Re: asctime.c
Date: Tue, 27 Jul 2004 00:37:12 -0700
From: Paul Eggert <eggert at CS.UCLA.EDU>
Message-ID: <87zn5lew9j.fsf at penguin.cs.ucla.edu>
None of my messages (these days) ever make it to the list - I suspect some
absurd anti-spam "protection" killing all of my mail.
But never mind that for now.
| /*
| ** The format used in the (2004) standard is
| ** "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n"
| ** Use "%02d", as it is a bit more portable than "%.2d".
| */
The most postable format is %02.2d - that works on every printf I've ever
seen that has any method to make a 2 column zero-filled numeric field.
Nothing else works on everything (the %02d version is original Research
unix/BSD variants, the %.2d version is original Sys III type stuff I think -
for a 2 character field, it probably doesn't matter, except possibly for the
value 0 (where a system that likes %.2d might produce just " 0" if given
%02d - the "0" in the format (SysIII variant) requires a leading 0 in the
result, or something like that, so for 1, you should get 01, but for 0 ...)
| result = snprintf(buf, STANDARD_BUFFER_SIZE,
| "%.3s %.3s%3d %02d:%02d:%02d %ld\n",
Please make that %4ld - it never mattered before, because the year was
always between 1900 and 21xx, so there were always 4 digits
anyway. But now if you're going to allow for year 10, etc, that
4 digit field needs to be forced to be 4 characters wide. It really
is supposed to be that, not just "the rest of the line".
The \n should be in buf[25] and absolutely nowhere else (for correct
historical compatibility). That is, doing
buf[25] = '\0';
to the result of asctime() is the "time honoured" way of printing the result
without the trailing \n (that or using "%.24s" which amounts to the same
thing).
kre
More information about the tz
mailing list