1 /* Test of <locale.h> substitute.
2    Copyright (C) 2007, 2009-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 /* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
18 
19 #include <config.h>
20 
21 #include <locale.h>
22 
23 #include "verify.h"
24 
25 int a[] =
26   {
27     LC_ALL,
28     LC_COLLATE,
29     LC_CTYPE,
30     LC_MESSAGES,
31     LC_MONETARY,
32     LC_NUMERIC,
33     LC_TIME
34   };
35 
36 /* Check that the 'struct lconv' type is defined.  */
37 struct lconv l;
38 int ls;
39 
40 /* Check that NULL can be passed through varargs as a pointer type,
41    per POSIX 2008.  */
42 verify (sizeof NULL == sizeof (void *));
43 
44 int
main()45 main ()
46 {
47 #if HAVE_WORKING_NEWLOCALE
48   /* Check that the locale_t type and the LC_GLOBAL_LOCALE macro are defined.  */
49   locale_t b = LC_GLOBAL_LOCALE;
50   (void) b;
51 #endif
52 
53   /* Check that 'struct lconv' has the ISO C and POSIX specified members.  */
54   ls += sizeof (*l.decimal_point);
55   ls += sizeof (*l.thousands_sep);
56   ls += sizeof (*l.grouping);
57   ls += sizeof (*l.mon_decimal_point);
58   ls += sizeof (*l.mon_thousands_sep);
59   ls += sizeof (*l.mon_grouping);
60   ls += sizeof (*l.positive_sign);
61   ls += sizeof (*l.negative_sign);
62   ls += sizeof (*l.currency_symbol);
63   ls += sizeof (l.frac_digits);
64   ls += sizeof (l.p_cs_precedes);
65   ls += sizeof (l.p_sign_posn);
66   ls += sizeof (l.p_sep_by_space);
67   ls += sizeof (l.n_cs_precedes);
68   ls += sizeof (l.n_sign_posn);
69   ls += sizeof (l.n_sep_by_space);
70   ls += sizeof (*l.int_curr_symbol);
71   ls += sizeof (l.int_frac_digits);
72   ls += sizeof (l.int_p_cs_precedes);
73   ls += sizeof (l.int_p_sign_posn);
74   ls += sizeof (l.int_p_sep_by_space);
75   ls += sizeof (l.int_n_cs_precedes);
76   ls += sizeof (l.int_n_sign_posn);
77   ls += sizeof (l.int_n_sep_by_space);
78 
79   return 0;
80 }
81