eggert at CS.UCLA.EDU
Thu Jul 29 23:12:35 UTC 2004
"Clive D.W. Feather" <clive at demon.net> writes:
> Robert Elz said:
>> The original asctime() specified exactly what the out buffer would
> Did it? How? That is, what did old manual pages actually say?
The Unix Version 7 manuals say that the output of ctime and asctime
contain exactly 26 characters (including the trailing newline and
null), and that all fields have constant width. When a
currently-conforming C implementation prints a year like 999 as "999",
without a leading space or blank, it does not conform to the original
I should mention again that the V7 implementation was buggy, in that
years before 1900 and after 2099 were not rendered correctly.
However, even with the bugs, the output was always exactly 26 bytes
long and included a trailing newline and null, so that part of the V7
specification was adhered to and applications can and did rely on this
> I'm not convinced that there has actually been a change.
Well, here's a quote from the horse's mouth
(in the ctime.3 man page section, in in troff input form).
It's quite clear that the output is fixed-width.
converts a time pointed to by
such as returned by
.IR time (2)
and returns a pointer to a
in the following form.
All the fields have constant width.
Sun Sep 16 01:03:52 1973\\n\\0
converts a broken-down time to ASCII and returns a pointer
to a 26-character string.
More information about the tz