This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] In do_get_time, %S from 0 to 59, or 60, or even 61?!?


Paolo Carlini wrote:
Hi,

in do_get_time, when we encounter %S we reject anything bigger than 59... However,
the C99 standard is very clear about the leap-second issue that leads to 60 being also
a valid value both in strftime and in tm.tm_sec. AFAIK, C89 even consider ok *two*
leap seconds, up to 61, crazy...

Correct. C99 changed it to 60 (see 7.23, p4).



Shall we at least accept 60 too? I'm tempted to think so, since otherwise we may
be unable to read back the output of by time_put (which uses internally just strftime!)

In alignment with C99, POSIX (SUSv3) strptime() accepts values in the range [0,60]. Being based on C89, SUSv2 accepts [0,61]. I would do whatever strftme()/strptime() does on each platform.

FWIW, here's an interesting paper on the history of the leap
second:
http://www.cl.cam.ac.uk/~mgk25/time/metrologia-leapsecond.pdf

Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]