Rich, on Mon, 24 Aug 2020 12:14:00 -0400 you (Rich Felker ) wrote: > I'm not *strongly* opposed to this, but my reasoning is fairly much in > line with the POSIX side, that these interfaces are legacy/deprecated, > and in general musl practice is to choose maximum simplicity over > size/performance optimality for deprecated/legacy or junk interfaces. > > In particular, asctime[_r] formats dates in a legacy US format, > whereas modern applications should be using either ISO date format or > a locale-specific format. But which is also a format used by the language itself (or refered to) by `__TIME__` and similar macros. > Note that ISO C specifies asctime in terms of a particular printf > format string, meaning the results are well-defined for any values > that don't overflow the specified buffer, even if they are somewhat > nonsensical. I don't think so. The general rules for valid arguments to C library functions always apply, so according to 7.1.4 calls to the functions with values that are outside the specified ranges for the type have UB. In the header the only exception from this rule seems to be `mktime`, which makes such exceptions explicit and says how the argument is normalized if it is not in the ranges as specified. The sample code that I posted does range checks with simple means that never results in unbounded UB and always returns a string that is null terminated. I would think that this is reasonable behavior. Jens -- :: INRIA Nancy Grand Est ::: Camus ::::::: ICube/ICPS ::: :: ::::::::::::::: office Strasbourg : +33 368854536 :: :: :::::::::::::::::::::: gsm France : +33 651400183 :: :: ::::::::::::::: gsm international : +49 15737185122 :: :: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::