1*820c1a8dSHiroo HAYASHI /* A POSIX <locale.h>. 2*820c1a8dSHiroo HAYASHI Copyright (C) 2007-2021 Free Software Foundation, Inc. 3*820c1a8dSHiroo HAYASHI 4*820c1a8dSHiroo HAYASHI This file is free software: you can redistribute it and/or modify 5*820c1a8dSHiroo HAYASHI it under the terms of the GNU Lesser General Public License as 6*820c1a8dSHiroo HAYASHI published by the Free Software Foundation; either version 2.1 of the 7*820c1a8dSHiroo HAYASHI License, or (at your option) any later version. 8*820c1a8dSHiroo HAYASHI 9*820c1a8dSHiroo HAYASHI This file is distributed in the hope that it will be useful, 10*820c1a8dSHiroo HAYASHI but WITHOUT ANY WARRANTY; without even the implied warranty of 11*820c1a8dSHiroo HAYASHI MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*820c1a8dSHiroo HAYASHI GNU Lesser General Public License for more details. 13*820c1a8dSHiroo HAYASHI 14*820c1a8dSHiroo HAYASHI You should have received a copy of the GNU Lesser General Public License 15*820c1a8dSHiroo HAYASHI along with this program. If not, see <https://www.gnu.org/licenses/>. */ 16*820c1a8dSHiroo HAYASHI 17*820c1a8dSHiroo HAYASHI #if __GNUC__ >= 3 18*820c1a8dSHiroo HAYASHI @PRAGMA_SYSTEM_HEADER@ 19*820c1a8dSHiroo HAYASHI #endif 20*820c1a8dSHiroo HAYASHI @PRAGMA_COLUMNS@ 21*820c1a8dSHiroo HAYASHI 22*820c1a8dSHiroo HAYASHI #if (defined _WIN32 && !defined __CYGWIN__ && defined __need_locale_t) \ 23*820c1a8dSHiroo HAYASHI || defined _GL_ALREADY_INCLUDING_LOCALE_H 24*820c1a8dSHiroo HAYASHI 25*820c1a8dSHiroo HAYASHI /* Special invocation convention: 26*820c1a8dSHiroo HAYASHI - Inside mingw header files, 27*820c1a8dSHiroo HAYASHI - To handle Solaris header files (through Solaris 10) when combined 28*820c1a8dSHiroo HAYASHI with gettext's libintl.h. */ 29*820c1a8dSHiroo HAYASHI 30*820c1a8dSHiroo HAYASHI #@INCLUDE_NEXT@ @NEXT_LOCALE_H@ 31*820c1a8dSHiroo HAYASHI 32*820c1a8dSHiroo HAYASHI #else 33*820c1a8dSHiroo HAYASHI /* Normal invocation convention. */ 34*820c1a8dSHiroo HAYASHI 35*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_LOCALE_H 36*820c1a8dSHiroo HAYASHI 37*820c1a8dSHiroo HAYASHI #define _GL_ALREADY_INCLUDING_LOCALE_H 38*820c1a8dSHiroo HAYASHI 39*820c1a8dSHiroo HAYASHI /* The include_next requires a split double-inclusion guard. */ 40*820c1a8dSHiroo HAYASHI #@INCLUDE_NEXT@ @NEXT_LOCALE_H@ 41*820c1a8dSHiroo HAYASHI 42*820c1a8dSHiroo HAYASHI #undef _GL_ALREADY_INCLUDING_LOCALE_H 43*820c1a8dSHiroo HAYASHI 44*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_LOCALE_H 45*820c1a8dSHiroo HAYASHI #define _@GUARD_PREFIX@_LOCALE_H 46*820c1a8dSHiroo HAYASHI 47*820c1a8dSHiroo HAYASHI /* NetBSD 5.0 mis-defines NULL. */ 48*820c1a8dSHiroo HAYASHI #include <stddef.h> 49*820c1a8dSHiroo HAYASHI 50*820c1a8dSHiroo HAYASHI /* Mac OS X 10.5 defines the locale_t type in <xlocale.h>. */ 51*820c1a8dSHiroo HAYASHI #if @HAVE_XLOCALE_H@ 52*820c1a8dSHiroo HAYASHI # include <xlocale.h> 53*820c1a8dSHiroo HAYASHI #endif 54*820c1a8dSHiroo HAYASHI 55*820c1a8dSHiroo HAYASHI /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 56*820c1a8dSHiroo HAYASHI 57*820c1a8dSHiroo HAYASHI /* The definition of _GL_ARG_NONNULL is copied here. */ 58*820c1a8dSHiroo HAYASHI 59*820c1a8dSHiroo HAYASHI /* The definition of _GL_WARN_ON_USE is copied here. */ 60*820c1a8dSHiroo HAYASHI 61*820c1a8dSHiroo HAYASHI /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C. 62*820c1a8dSHiroo HAYASHI On systems that don't define it, use the same value as GNU libintl. */ 63*820c1a8dSHiroo HAYASHI #if !defined LC_MESSAGES 64*820c1a8dSHiroo HAYASHI # define LC_MESSAGES 1729 65*820c1a8dSHiroo HAYASHI #endif 66*820c1a8dSHiroo HAYASHI 67*820c1a8dSHiroo HAYASHI /* On native Windows with MSVC, 'struct lconv' lacks the members int_p_* and 68*820c1a8dSHiroo HAYASHI int_n_*. Instead of overriding 'struct lconv', merely define these member 69*820c1a8dSHiroo HAYASHI names as macros. This avoids trouble in C++ mode. */ 70*820c1a8dSHiroo HAYASHI #if defined _MSC_VER 71*820c1a8dSHiroo HAYASHI # define int_p_cs_precedes p_cs_precedes 72*820c1a8dSHiroo HAYASHI # define int_p_sign_posn p_sign_posn 73*820c1a8dSHiroo HAYASHI # define int_p_sep_by_space p_sep_by_space 74*820c1a8dSHiroo HAYASHI # define int_n_cs_precedes n_cs_precedes 75*820c1a8dSHiroo HAYASHI # define int_n_sign_posn n_sign_posn 76*820c1a8dSHiroo HAYASHI # define int_n_sep_by_space n_sep_by_space 77*820c1a8dSHiroo HAYASHI #endif 78*820c1a8dSHiroo HAYASHI 79*820c1a8dSHiroo HAYASHI /* Bionic libc's 'struct lconv' is just a dummy. */ 80*820c1a8dSHiroo HAYASHI #if @REPLACE_STRUCT_LCONV@ 81*820c1a8dSHiroo HAYASHI # define lconv rpl_lconv 82*820c1a8dSHiroo HAYASHI struct lconv 83*820c1a8dSHiroo HAYASHI { 84*820c1a8dSHiroo HAYASHI /* All 'char *' are actually 'const char *'. */ 85*820c1a8dSHiroo HAYASHI 86*820c1a8dSHiroo HAYASHI /* Members that depend on the LC_NUMERIC category of the locale. See 87*820c1a8dSHiroo HAYASHI <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */ 88*820c1a8dSHiroo HAYASHI 89*820c1a8dSHiroo HAYASHI /* Symbol used as decimal point. */ 90*820c1a8dSHiroo HAYASHI char *decimal_point; 91*820c1a8dSHiroo HAYASHI /* Symbol used to separate groups of digits to the left of the decimal 92*820c1a8dSHiroo HAYASHI point. */ 93*820c1a8dSHiroo HAYASHI char *thousands_sep; 94*820c1a8dSHiroo HAYASHI /* Definition of the size of groups of digits to the left of the decimal 95*820c1a8dSHiroo HAYASHI point. */ 96*820c1a8dSHiroo HAYASHI char *grouping; 97*820c1a8dSHiroo HAYASHI 98*820c1a8dSHiroo HAYASHI /* Members that depend on the LC_MONETARY category of the locale. See 99*820c1a8dSHiroo HAYASHI <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */ 100*820c1a8dSHiroo HAYASHI 101*820c1a8dSHiroo HAYASHI /* Symbol used as decimal point. */ 102*820c1a8dSHiroo HAYASHI char *mon_decimal_point; 103*820c1a8dSHiroo HAYASHI /* Symbol used to separate groups of digits to the left of the decimal 104*820c1a8dSHiroo HAYASHI point. */ 105*820c1a8dSHiroo HAYASHI char *mon_thousands_sep; 106*820c1a8dSHiroo HAYASHI /* Definition of the size of groups of digits to the left of the decimal 107*820c1a8dSHiroo HAYASHI point. */ 108*820c1a8dSHiroo HAYASHI char *mon_grouping; 109*820c1a8dSHiroo HAYASHI /* Sign used to indicate a value >= 0. */ 110*820c1a8dSHiroo HAYASHI char *positive_sign; 111*820c1a8dSHiroo HAYASHI /* Sign used to indicate a value < 0. */ 112*820c1a8dSHiroo HAYASHI char *negative_sign; 113*820c1a8dSHiroo HAYASHI 114*820c1a8dSHiroo HAYASHI /* For formatting local currency. */ 115*820c1a8dSHiroo HAYASHI /* Currency symbol (3 characters) followed by separator (1 character). */ 116*820c1a8dSHiroo HAYASHI char *currency_symbol; 117*820c1a8dSHiroo HAYASHI /* Number of digits after the decimal point. */ 118*820c1a8dSHiroo HAYASHI char frac_digits; 119*820c1a8dSHiroo HAYASHI /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it 120*820c1a8dSHiroo HAYASHI comes after the number. */ 121*820c1a8dSHiroo HAYASHI char p_cs_precedes; 122*820c1a8dSHiroo HAYASHI /* For values >= 0: Position of the sign. */ 123*820c1a8dSHiroo HAYASHI char p_sign_posn; 124*820c1a8dSHiroo HAYASHI /* For values >= 0: Placement of spaces between currency symbol, sign, and 125*820c1a8dSHiroo HAYASHI number. */ 126*820c1a8dSHiroo HAYASHI char p_sep_by_space; 127*820c1a8dSHiroo HAYASHI /* For values < 0: 1 if the currency symbol precedes the number, 0 if it 128*820c1a8dSHiroo HAYASHI comes after the number. */ 129*820c1a8dSHiroo HAYASHI char n_cs_precedes; 130*820c1a8dSHiroo HAYASHI /* For values < 0: Position of the sign. */ 131*820c1a8dSHiroo HAYASHI char n_sign_posn; 132*820c1a8dSHiroo HAYASHI /* For values < 0: Placement of spaces between currency symbol, sign, and 133*820c1a8dSHiroo HAYASHI number. */ 134*820c1a8dSHiroo HAYASHI char n_sep_by_space; 135*820c1a8dSHiroo HAYASHI 136*820c1a8dSHiroo HAYASHI /* For formatting international currency. */ 137*820c1a8dSHiroo HAYASHI /* Currency symbol (3 characters) followed by separator (1 character). */ 138*820c1a8dSHiroo HAYASHI char *int_curr_symbol; 139*820c1a8dSHiroo HAYASHI /* Number of digits after the decimal point. */ 140*820c1a8dSHiroo HAYASHI char int_frac_digits; 141*820c1a8dSHiroo HAYASHI /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it 142*820c1a8dSHiroo HAYASHI comes after the number. */ 143*820c1a8dSHiroo HAYASHI char int_p_cs_precedes; 144*820c1a8dSHiroo HAYASHI /* For values >= 0: Position of the sign. */ 145*820c1a8dSHiroo HAYASHI char int_p_sign_posn; 146*820c1a8dSHiroo HAYASHI /* For values >= 0: Placement of spaces between currency symbol, sign, and 147*820c1a8dSHiroo HAYASHI number. */ 148*820c1a8dSHiroo HAYASHI char int_p_sep_by_space; 149*820c1a8dSHiroo HAYASHI /* For values < 0: 1 if the currency symbol precedes the number, 0 if it 150*820c1a8dSHiroo HAYASHI comes after the number. */ 151*820c1a8dSHiroo HAYASHI char int_n_cs_precedes; 152*820c1a8dSHiroo HAYASHI /* For values < 0: Position of the sign. */ 153*820c1a8dSHiroo HAYASHI char int_n_sign_posn; 154*820c1a8dSHiroo HAYASHI /* For values < 0: Placement of spaces between currency symbol, sign, and 155*820c1a8dSHiroo HAYASHI number. */ 156*820c1a8dSHiroo HAYASHI char int_n_sep_by_space; 157*820c1a8dSHiroo HAYASHI }; 158*820c1a8dSHiroo HAYASHI #endif 159*820c1a8dSHiroo HAYASHI 160*820c1a8dSHiroo HAYASHI #if @GNULIB_LOCALECONV@ 161*820c1a8dSHiroo HAYASHI # if @REPLACE_LOCALECONV@ 162*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 163*820c1a8dSHiroo HAYASHI # undef localeconv 164*820c1a8dSHiroo HAYASHI # define localeconv rpl_localeconv 165*820c1a8dSHiroo HAYASHI # endif 166*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void)); 167*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void)); 168*820c1a8dSHiroo HAYASHI # else 169*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void)); 170*820c1a8dSHiroo HAYASHI # endif 171*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 172*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (localeconv); 173*820c1a8dSHiroo HAYASHI # endif 174*820c1a8dSHiroo HAYASHI #elif @REPLACE_STRUCT_LCONV@ 175*820c1a8dSHiroo HAYASHI # undef localeconv 176*820c1a8dSHiroo HAYASHI # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv 177*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 178*820c1a8dSHiroo HAYASHI # undef localeconv 179*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_LOCALECONV 180*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (localeconv, 181*820c1a8dSHiroo HAYASHI "localeconv returns too few information on some platforms - " 182*820c1a8dSHiroo HAYASHI "use gnulib module localeconv for portability"); 183*820c1a8dSHiroo HAYASHI # endif 184*820c1a8dSHiroo HAYASHI #endif 185*820c1a8dSHiroo HAYASHI 186*820c1a8dSHiroo HAYASHI #if @GNULIB_SETLOCALE@ 187*820c1a8dSHiroo HAYASHI # if @REPLACE_SETLOCALE@ 188*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 189*820c1a8dSHiroo HAYASHI # undef setlocale 190*820c1a8dSHiroo HAYASHI # define setlocale rpl_setlocale 191*820c1a8dSHiroo HAYASHI # define GNULIB_defined_setlocale 1 192*820c1a8dSHiroo HAYASHI # endif 193*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale)); 194*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale)); 195*820c1a8dSHiroo HAYASHI # else 196*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale)); 197*820c1a8dSHiroo HAYASHI # endif 198*820c1a8dSHiroo HAYASHI # if __GLIBC__ >= 2 199*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (setlocale); 200*820c1a8dSHiroo HAYASHI # endif 201*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 202*820c1a8dSHiroo HAYASHI # undef setlocale 203*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_SETLOCALE 204*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - " 205*820c1a8dSHiroo HAYASHI "use gnulib module setlocale for portability"); 206*820c1a8dSHiroo HAYASHI # endif 207*820c1a8dSHiroo HAYASHI #endif 208*820c1a8dSHiroo HAYASHI 209*820c1a8dSHiroo HAYASHI #if @GNULIB_SETLOCALE_NULL@ 210*820c1a8dSHiroo HAYASHI /* Included here for convenience. */ 211*820c1a8dSHiroo HAYASHI # include "setlocale_null.h" 212*820c1a8dSHiroo HAYASHI #endif 213*820c1a8dSHiroo HAYASHI 214*820c1a8dSHiroo HAYASHI #if /*@GNULIB_NEWLOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_NEWLOCALE@) 215*820c1a8dSHiroo HAYASHI # if @REPLACE_NEWLOCALE@ 216*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 217*820c1a8dSHiroo HAYASHI # undef newlocale 218*820c1a8dSHiroo HAYASHI # define newlocale rpl_newlocale 219*820c1a8dSHiroo HAYASHI # define GNULIB_defined_newlocale 1 220*820c1a8dSHiroo HAYASHI # endif 221*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (newlocale, locale_t, 222*820c1a8dSHiroo HAYASHI (int category_mask, const char *name, locale_t base) 223*820c1a8dSHiroo HAYASHI _GL_ARG_NONNULL ((2))); 224*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (newlocale, locale_t, 225*820c1a8dSHiroo HAYASHI (int category_mask, const char *name, locale_t base)); 226*820c1a8dSHiroo HAYASHI # else 227*820c1a8dSHiroo HAYASHI # if @HAVE_NEWLOCALE@ 228*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (newlocale, locale_t, 229*820c1a8dSHiroo HAYASHI (int category_mask, const char *name, locale_t base)); 230*820c1a8dSHiroo HAYASHI # endif 231*820c1a8dSHiroo HAYASHI # endif 232*820c1a8dSHiroo HAYASHI # if @HAVE_NEWLOCALE@ 233*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (newlocale); 234*820c1a8dSHiroo HAYASHI # endif 235*820c1a8dSHiroo HAYASHI # if @HAVE_NEWLOCALE@ || @REPLACE_NEWLOCALE@ 236*820c1a8dSHiroo HAYASHI # ifndef HAVE_WORKING_NEWLOCALE 237*820c1a8dSHiroo HAYASHI # define HAVE_WORKING_NEWLOCALE 1 238*820c1a8dSHiroo HAYASHI # endif 239*820c1a8dSHiroo HAYASHI # endif 240*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 241*820c1a8dSHiroo HAYASHI # undef newlocale 242*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_NEWLOCALE 243*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (newlocale, "newlocale is not portable"); 244*820c1a8dSHiroo HAYASHI # endif 245*820c1a8dSHiroo HAYASHI #endif 246*820c1a8dSHiroo HAYASHI 247*820c1a8dSHiroo HAYASHI #if @GNULIB_DUPLOCALE@ || (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_DUPLOCALE@) 248*820c1a8dSHiroo HAYASHI # if @REPLACE_DUPLOCALE@ 249*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 250*820c1a8dSHiroo HAYASHI # undef duplocale 251*820c1a8dSHiroo HAYASHI # define duplocale rpl_duplocale 252*820c1a8dSHiroo HAYASHI # define GNULIB_defined_duplocale 1 253*820c1a8dSHiroo HAYASHI # endif 254*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1))); 255*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale)); 256*820c1a8dSHiroo HAYASHI # else 257*820c1a8dSHiroo HAYASHI # if @HAVE_DUPLOCALE@ 258*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale)); 259*820c1a8dSHiroo HAYASHI # endif 260*820c1a8dSHiroo HAYASHI # endif 261*820c1a8dSHiroo HAYASHI # if @HAVE_DUPLOCALE@ 262*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (duplocale); 263*820c1a8dSHiroo HAYASHI # endif 264*820c1a8dSHiroo HAYASHI # if @HAVE_DUPLOCALE@ || @REPLACE_DUPLOCALE@ 265*820c1a8dSHiroo HAYASHI # ifndef HAVE_WORKING_DUPLOCALE 266*820c1a8dSHiroo HAYASHI # define HAVE_WORKING_DUPLOCALE 1 267*820c1a8dSHiroo HAYASHI # endif 268*820c1a8dSHiroo HAYASHI # endif 269*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 270*820c1a8dSHiroo HAYASHI # undef duplocale 271*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_DUPLOCALE 272*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - " 273*820c1a8dSHiroo HAYASHI "use gnulib module duplocale for portability"); 274*820c1a8dSHiroo HAYASHI # endif 275*820c1a8dSHiroo HAYASHI #endif 276*820c1a8dSHiroo HAYASHI 277*820c1a8dSHiroo HAYASHI #if /*@GNULIB_FREELOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_FREELOCALE@) 278*820c1a8dSHiroo HAYASHI # if @REPLACE_FREELOCALE@ 279*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 280*820c1a8dSHiroo HAYASHI # undef freelocale 281*820c1a8dSHiroo HAYASHI # define freelocale rpl_freelocale 282*820c1a8dSHiroo HAYASHI # define GNULIB_defined_freelocale 1 283*820c1a8dSHiroo HAYASHI # endif 284*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (freelocale, void, (locale_t locale) _GL_ARG_NONNULL ((1))); 285*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (freelocale, void, (locale_t locale)); 286*820c1a8dSHiroo HAYASHI # else 287*820c1a8dSHiroo HAYASHI # if @HAVE_FREELOCALE@ 288*820c1a8dSHiroo HAYASHI /* Need to cast, because on FreeBSD and Mac OS X 10.13, the return type is 289*820c1a8dSHiroo HAYASHI int. */ 290*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS_CAST (freelocale, void, (locale_t locale)); 291*820c1a8dSHiroo HAYASHI # endif 292*820c1a8dSHiroo HAYASHI # endif 293*820c1a8dSHiroo HAYASHI # if @HAVE_FREELOCALE@ 294*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (freelocale); 295*820c1a8dSHiroo HAYASHI # endif 296*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 297*820c1a8dSHiroo HAYASHI # undef freelocale 298*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_FREELOCALE 299*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (freelocale, "freelocale is not portable"); 300*820c1a8dSHiroo HAYASHI # endif 301*820c1a8dSHiroo HAYASHI #endif 302*820c1a8dSHiroo HAYASHI 303*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_LOCALE_H */ 304*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_LOCALE_H */ 305*820c1a8dSHiroo HAYASHI #endif /* !(__need_locale_t || _GL_ALREADY_INCLUDING_LOCALE_H) */ 306