Skip to content
Permalink
20003c4988
Switch branches/tags

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?
Go to file
 
 
Cannot retrieve contributors at this time
129 lines (114 sloc) 2.73 KB
#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"