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 "signature.h" 22 SIGNATURE_CHECK (setlocale, char *, (int, const char *)); 23 24 #include <stdlib.h> 25 #include <string.h> 26 27 #include "macros.h" 28 29 int 30 main (int argc, char *argv[]) /* */ 31 { 32 char *name1; 33 char *name2; 34 35 /* Try to set the locale by implicitly looking at the LC_ALL environment 36 variable. 37 configure should already have checked that the locale is supported. */ 38 if (setlocale (LC_ALL, "") == NULL) 39 return 1; 40 41 name1 = strdup (setlocale (LC_ALL, NULL)); 42 43 /* Reset the locale. */ 44 if (setlocale (LC_ALL, "C") == NULL) 45 return 1; 46 47 /* Try to set the locale by explicitly looking at the LC_ALL environment 48 variable. 49 configure should already have checked that the locale is supported. */ 50 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL) 51 return 1; 52 53 name2 = strdup (setlocale (LC_ALL, NULL)); 54 55 ASSERT (name1); 56 ASSERT (name2); 57 58 /* Test that the two results are the same. */ 59 ASSERT (strcmp (name1, name2) == 0); 60 free (name1); 61 free (name2); 62 63 return 0; 64 }