-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Newlib has several POSIX compliance issues in strftime(). See http://www.opengroup.org/onlinepubs/009695399/functions/strftime.html for the mandated behavior. Since newlib does not support any locales other than "C", strftime() should be fixed to follow the mandated behavior. The broken behavior of strftime() leads to failures in the coreutils program date on cygwin and any other newlib-based platform.
Should coreutils add a configure-time check that looks for broken strftime(), or should I just wait for a new version of newlib that fixes the compliance issues? In newlib, strftime() treats "%r" as "", although Posix requires it to be a synonym for "%I:%M:%S %p" in the POSIX/C locale. Likewise, newlib treats "%x" as "%a %b %d %Y", although Posix mandates "%m/%d/%y". Finally, newlib does not support the %E or %O modifiers, even though Posix mandates that they be ignored for the conversion specifiers that support them (in other words, "%Ey", "%Oy", and "%y" are all required and should behave identically in the "C" locale, but since "%Ea" is not required, its behavior is undefined). In the sample program below, the two output lines should be identical. $ cat foo.c #include <time.h> #include <stdlib.h> #include <locale.h> #define MAX_LEN 80 int main() { char str[MAX_LEN]; struct tm t; setlocale(LC_ALL, "C"); memset(&t, 0, sizeof(t)); t.tm_sec = 30; t.tm_min = 15; t.tm_hour = 1; /* 1:15:30 AM */ t.tm_mday = 18; /* 18th */ t.tm_mon = 0; /* Jan */ t.tm_year = 105; /* 2005 */ t.tm_wday = 2; /* Tue */ strftime(str, MAX_LEN, "%r#%x#%Ey#%Oy", &t); puts(str); strftime(str, MAX_LEN, "%I:%M:%S %p#%m/%d/%y#%y#%y", &t); puts(str); return 0; } $ gcc -o foo foo.c $ ./foo #Tue Jan 18 2005#y#y 01:15:30 AM#01/18/05#05#05 - -- Life is short - so eat dessert first! Eric Blake [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (Cygwin) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFB7mKr84KuGfSFAYARAjNdAKCjNw/IWf0ZxBMvHsAo6dm/T2gwogCfWjyK 4H/w5oTgp9MOZ/nZSTUYp5A= =OA+F -----END PGP SIGNATURE----- _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils