Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
glibc/time/tst-ftime_l.c
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
129 lines (114 sloc)
2.73 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <locale.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <time.h> | |
#include <wchar.h> | |
static int | |
do_test (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) | |
{ | |
puts ("newlocale failed"); | |
exit (1); | |
} | |
memset (&tm, '\0', sizeof (tm)); | |
tm.tm_year = 102; | |
tm.tm_mon = 2; | |
tm.tm_mday = 1; | |
if (strftime (buf, sizeof (buf), "%e %^B %Y", &tm) == 0) | |
{ | |
puts ("initial strftime failed"); | |
exit (1); | |
} | |
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); | |
/* Now using the extended locale model. */ | |
if (strftime_l (buf, sizeof (buf), "%e %^B %Y", &tm, l) == 0) | |
{ | |
puts ("strftime_l failed"); | |
result = 1; | |
} | |
else if (strcmp (buf, " 1 M\xc4RZ 2002") != 0) | |
{ | |
printf ("strftime_l: 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"); | |
} | |
/* And the wide character version. */ | |
if (wcsftime_l (wbuf, sizeof (wbuf) / sizeof (wbuf[0]), L"%e %^B %Y", &tm, l) | |
== 0) | |
{ | |
puts ("wcsftime_l failed"); | |
result = 1; | |
} | |
else if (wcscmp (wbuf, L" 1 M\x00c4RZ 2002") != 0) | |
{ | |
printf ("wcsftime_l: expected \"%ls\", got \"%ls\"\n", | |
L" 1 M\x00c4RZ 2002", wbuf); | |
result = 1; | |
} | |
else | |
{ | |
setlocale (LC_ALL, "de_DE.ISO-8859-1"); | |
printf ("got \"%ls\"\n", wbuf); | |
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; | |
} | |
#define TEST_FUNCTION do_test () | |
#include "../test-skeleton.c" |