// BZ 12788 #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> static int do_test (void) { int result = 0; char *a = setlocale (LC_ALL, ""); printf ("setlocale(LC_ALL, \"\") = %s\n", a); if (a == NULL) return 1; a = strdupa (a); char *b = setlocale (LC_CTYPE, ""); printf ("setlocale(LC_CTYPE, \"\") = %s\n", b); if (b == NULL) return 1; char *c = setlocale (LC_ALL, NULL); printf ("setlocale(LC_ALL, NULL) = %s\n", c); if (c == NULL) return 1; c = strdupa (c); if (strcmp (a, c) != 0) { puts ("*** first and third result do not match"); result = 1; } char *d = setlocale (LC_NUMERIC, ""); printf ("setlocale(LC_NUMERIC, \"\") = %s\n", d); if (d == NULL) return 1; if (strcmp (d, "C") != 0) { puts ("*** LC_NUMERIC not C"); result = 1; } char *e = setlocale (LC_ALL, NULL); printf ("setlocale(LC_ALL, NULL) = %s\n", e); if (e == NULL) return 1; if (strcmp (a, e) != 0) { puts ("*** first and fifth result do not match"); result = 1; } char *f = setlocale (LC_ALL, "C"); printf ("setlocale(LC_ALL, \"C\") = %s\n", f); if (f == NULL) return 1; if (strcmp (f, "C") != 0) { puts ("*** LC_ALL not C"); result = 1; } char *g = setlocale (LC_ALL, NULL); printf ("setlocale(LC_ALL, NULL) = %s\n", g); if (g == NULL) return 1; if (strcmp (g, "C") != 0) { puts ("*** LC_ALL not C"); result = 1; } char *h = setlocale (LC_CTYPE, NULL); printf ("setlocale(LC_CTYPE, NULL) = %s\n", h); if (h == NULL) return 1; if (strcmp (h, "C") != 0) { puts ("*** LC_CTYPE not C"); result = 1; } return result; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"