1 /* Test of setting the current locale. 2 Copyright (C) 2011-2021 Free Software Foundation, Inc. 3 4 This program is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 3 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 16 17 #include <config.h> 18 19 #include <locale.h> 20 21 #include <stdio.h> 22 #include <stdlib.h> 23 #include <string.h> 24 25 int 26 main () /* */ 27 { 28 /* Try to set the locale by implicitly looking at the LC_ALL environment 29 variable. */ 30 if (setlocale (LC_ALL, "") != NULL) 31 /* It was successful. Check whether LC_CTYPE is non-trivial. */ 32 if (strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) 33 { 34 fprintf (stderr, "setlocale did not fail for implicit %s\n", 35 getenv ("LC_ALL")); 36 return 1; 37 } 38 39 /* Reset the locale. */ 40 if (setlocale (LC_ALL, "C") == NULL) 41 return 1; 42 43 /* Try to set the locale by explicitly looking at the LC_ALL environment 44 variable. */ 45 if (setlocale (LC_ALL, getenv ("LC_ALL")) != NULL) 46 /* It was successful. Check whether LC_CTYPE is non-trivial. */ 47 if (strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) 48 { 49 fprintf (stderr, "setlocale did not fail for explicit %s\n", 50 getenv ("LC_ALL")); 51 return 1; 52 } 53 54 return 0; 55 }