1// BZ 12788
2#include <locale.h>
3#include <stdio.h>
4#include <stdlib.h>
5#include <string.h>
6#include <unistd.h>
7
8
9static int
10do_test (void)
11{
12 int result = 0;
13
14 char *a = setlocale (LC_ALL, "");
15 printf (format: "setlocale(LC_ALL, \"\") = %s\n", a);
16 if (a == NULL)
17 return 1;
18 a = strdupa (a);
19
20 char *b = setlocale (LC_CTYPE, "");
21 printf (format: "setlocale(LC_CTYPE, \"\") = %s\n", b);
22 if (b == NULL)
23 return 1;
24
25 char *c = setlocale (LC_ALL, NULL);
26 printf (format: "setlocale(LC_ALL, NULL) = %s\n", c);
27 if (c == NULL)
28 return 1;
29 c = strdupa (c);
30
31 if (strcmp (a, c) != 0)
32 {
33 puts (s: "*** first and third result do not match");
34 result = 1;
35 }
36
37 char *d = setlocale (LC_NUMERIC, "");
38 printf (format: "setlocale(LC_NUMERIC, \"\") = %s\n", d);
39 if (d == NULL)
40 return 1;
41
42 if (strcmp (d, "C") != 0)
43 {
44 puts (s: "*** LC_NUMERIC not C");
45 result = 1;
46 }
47
48 char *e = setlocale (LC_ALL, NULL);
49 printf (format: "setlocale(LC_ALL, NULL) = %s\n", e);
50 if (e == NULL)
51 return 1;
52
53 if (strcmp (a, e) != 0)
54 {
55 puts (s: "*** first and fifth result do not match");
56 result = 1;
57 }
58
59 char *f = setlocale (LC_ALL, "C");
60 printf (format: "setlocale(LC_ALL, \"C\") = %s\n", f);
61 if (f == NULL)
62 return 1;
63
64 if (strcmp (f, "C") != 0)
65 {
66 puts (s: "*** LC_ALL not C");
67 result = 1;
68 }
69
70 char *g = setlocale (LC_ALL, NULL);
71 printf (format: "setlocale(LC_ALL, NULL) = %s\n", g);
72 if (g == NULL)
73 return 1;
74
75 if (strcmp (g, "C") != 0)
76 {
77 puts (s: "*** LC_ALL not C");
78 result = 1;
79 }
80
81 char *h = setlocale (LC_CTYPE, NULL);
82 printf (format: "setlocale(LC_CTYPE, NULL) = %s\n", h);
83 if (h == NULL)
84 return 1;
85
86 if (strcmp (h, "C") != 0)
87 {
88 puts (s: "*** LC_CTYPE not C");
89 result = 1;
90 }
91
92 return result;
93}
94
95#define TEST_FUNCTION do_test ()
96#include "../test-skeleton.c"
97

source code of glibc/localedata/bug-setlocale1.c