History log of /seL4-refos-master/libs/libmuslc/src/time/wcsftime.c
Revision Date Author Comments
# 4c48501e 02-Jul-2014 Rich Felker <dalias@aerifal.cx>

properly pass current locale to *_l functions when used internally

this change is presently non-functional since the callees do not yet
use their locale argument for anything.


# 57174444 11-Dec-2013 Szabolcs Nagy <nsz@port70.net>

include cleanups: remove unused headers and add feature test macros


# f63b8c8c 26-Nov-2013 Rich Felker <dalias@aerifal.cx>

fix off-by-one length failure in strftime/wcsftime and improve error behavior

these functions were spuriously failing in the case where the buffer
size was exactly the number of bytes/characters to be written,
including null termination. since these functions do not have defined
error conditions other than buffer size, a reasonable application may
fail to check the return value when the format string and buffer size
are known to be valid; such an application could then attempt to use a
non-terminated buffer.

in addition to fixing the bug, I have changed the error handling
behavior so that these functions always null-terminate the output
except in the case where the buffer size is zero, and so that they
always write as many characters as possible before failing, rather
than dropping whole fields that do not fit. this actually simplifies
the logic somewhat anyway.


# fc48ceee 22-Aug-2013 Rich Felker <dalias@aerifal.cx>

add strftime and wcsftime field widths

at present, since POSIX requires %F to behave as %+4Y-%m-%d and ISO C
requires %F to behave as %Y-%m-%d, the default behavior for %Y has
been changed to match %+4Y. this seems to be the only way to conform
to the requirements of both standards, and it does not affect years
prior to the year 10000. depending on the outcome of interpretations
from the standards bodies, this may be adjusted at some point.


# 0c7294ef 02-Aug-2013 Rich Felker <dalias@aerifal.cx>

add wcsftime_t alias

this is a nonstandard extension.


# 1ae4bc42 28-Jul-2013 Rich Felker <dalias@aerifal.cx>

fix semantically incorrect use of LC_GLOBAL_LOCALE

LC_GLOBAL_LOCALE refers to the global locale, controlled by setlocale,
not the thread-local locale in effect which these functions should be
using. neither LC_GLOBAL_LOCALE nor 0 has an argument to the *_l
functions has behavior defined by the standard, but 0 is a more
logical choice for requesting the callee to lookup the current locale.
in the future I may move the current locale lookup the the caller (the
non-_l-suffixed wrapper).

at this point, all of the locale logic is dummied out, so no harm was
done, but it should at least avoid misleading usage.


# cccf64e2 24-Jul-2013 Rich Felker <dalias@aerifal.cx>

add __wcsftime_l symbol

unlike the strftime commit, this one is purely an ABI compatibility
issue. the previous version of the code would have worked just as well
with LC_TIME once LC_TIME support is added.


# 400c5e5c 06-Sep-2012 Rich Felker <dalias@aerifal.cx>

use restrict everywhere it's required by c99 and/or posix 2008

to deal with the fact that the public headers may be used with pre-c99
compilers, __restrict is used in place of restrict, and defined
appropriately for any supported compiler. we also avoid the form
[restrict] since older versions of gcc rejected it due to a bug in the
original c99 standard, and instead use the form *restrict.


# 95b930ad 28-Feb-2012 Rich Felker <dalias@aerifal.cx>

implement wcsftime function