diff options
Diffstat (limited to 'time')
-rw-r--r-- | time/tst-ftime_l.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/time/tst-ftime_l.c b/time/tst-ftime_l.c index 6ebc973..fc3d78d 100644 --- a/time/tst-ftime_l.c +++ b/time/tst-ftime_l.c @@ -10,10 +10,12 @@ int main (void) { locale_t l; + locale_t old; struct tm tm; char buf[1000]; wchar_t wbuf[1000]; int result = 0; + size_t n; l = newlocale (LC_ALL_MASK, "de_DE.ISO-8859-1", NULL); if (l == NULL) @@ -81,5 +83,44 @@ main (void) setlocale (LC_ALL, "C"); } + old = uselocale (l); + + n = strftime (buf, sizeof (buf), "%e %^B %Y", &tm); + + /* Switch back. */ + (void) uselocale (old); + + if (n == 0) + { + puts ("strftime after first uselocale failed"); + result = 1; + } + else if (strcmp (buf, " 1 M\xc4RZ 2002") != 0) + { + printf ("strftime in non-C locale: expected \"%s\", got \"%s\"\n", + " 1 M\xc4RZ 2002", buf); + result = 1; + } + else + { + setlocale (LC_ALL, "de_DE.ISO-8859-1"); + printf ("got \"%s\"\n", buf); + setlocale (LC_ALL, "C"); + } + + if (strftime (buf, sizeof (buf), "%e %^B %Y", &tm) == 0) + { + puts ("strftime after second uselocale failed"); + result = 1; + } + else if (strcmp (buf, " 1 MARCH 2002") != 0) + { + printf ("initial strftime: expected \"%s\", got \"%s\"\n", + " 1 MARCH 2002", buf); + result = 1; + } + else + printf ("got \"%s\"\n", buf); + return result; } |