locale.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
  2. /* A POSIX <locale.h>.
  3. Copyright (C) 2007-2013 Free Software Foundation, Inc.
  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. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  14. #if __GNUC__ >= 3
  15. #endif
  16. #ifdef _GL_ALREADY_INCLUDING_LOCALE_H
  17. /* Special invocation conventions to handle Solaris header files
  18. (through Solaris 10) when combined with gettext's libintl.h. */
  19. #if _MSC_VER >= 1900
  20. #include <../ucrt/locale.h>
  21. #else
  22. #error #include <../include/locale.h>
  23. #endif
  24. #else
  25. /* Normal invocation convention. */
  26. #ifndef _GL_M4_LOCALE_H
  27. #define _GL_ALREADY_INCLUDING_LOCALE_H
  28. /* The include_next requires a split double-inclusion guard. */
  29. #if _MSC_VER >= 1900
  30. #include <../ucrt/locale.h>
  31. #else
  32. #error #include <../include/locale.h>
  33. #endif
  34. #undef _GL_ALREADY_INCLUDING_LOCALE_H
  35. #ifndef _GL_M4_LOCALE_H
  36. #define _GL_M4_LOCALE_H
  37. /* NetBSD 5.0 mis-defines NULL. */
  38. #include <stddef.h>
  39. /* Mac OS X 10.5 defines the locale_t type in <xlocale.h>. */
  40. #if 0
  41. # include <xlocale.h>
  42. #endif
  43. /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
  44. #ifndef _GL_CXXDEFS_H
  45. #define _GL_CXXDEFS_H
  46. /* The three most frequent use cases of these macros are:
  47. * For providing a substitute for a function that is missing on some
  48. platforms, but is declared and works fine on the platforms on which
  49. it exists:
  50. #if @GNULIB_FOO@
  51. # if !@HAVE_FOO@
  52. _GL_FUNCDECL_SYS (foo, ...);
  53. # endif
  54. _GL_CXXALIAS_SYS (foo, ...);
  55. _GL_CXXALIASWARN (foo);
  56. #elif defined GNULIB_POSIXCHECK
  57. ...
  58. #endif
  59. * For providing a replacement for a function that exists on all platforms,
  60. but is broken/insufficient and needs to be replaced on some platforms:
  61. #if @GNULIB_FOO@
  62. # if @REPLACE_FOO@
  63. # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  64. # undef foo
  65. # define foo rpl_foo
  66. # endif
  67. _GL_FUNCDECL_RPL (foo, ...);
  68. _GL_CXXALIAS_RPL (foo, ...);
  69. # else
  70. _GL_CXXALIAS_SYS (foo, ...);
  71. # endif
  72. _GL_CXXALIASWARN (foo);
  73. #elif defined GNULIB_POSIXCHECK
  74. ...
  75. #endif
  76. * For providing a replacement for a function that exists on some platforms
  77. but is broken/insufficient and needs to be replaced on some of them and
  78. is additionally either missing or undeclared on some other platforms:
  79. #if @GNULIB_FOO@
  80. # if @REPLACE_FOO@
  81. # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  82. # undef foo
  83. # define foo rpl_foo
  84. # endif
  85. _GL_FUNCDECL_RPL (foo, ...);
  86. _GL_CXXALIAS_RPL (foo, ...);
  87. # else
  88. # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@
  89. _GL_FUNCDECL_SYS (foo, ...);
  90. # endif
  91. _GL_CXXALIAS_SYS (foo, ...);
  92. # endif
  93. _GL_CXXALIASWARN (foo);
  94. #elif defined GNULIB_POSIXCHECK
  95. ...
  96. #endif
  97. */
  98. /* _GL_EXTERN_C declaration;
  99. performs the declaration with C linkage. */
  100. #if defined __cplusplus
  101. # define _GL_EXTERN_C extern "C"
  102. #else
  103. # define _GL_EXTERN_C extern
  104. #endif
  105. /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
  106. declares a replacement function, named rpl_func, with the given prototype,
  107. consisting of return type, parameters, and attributes.
  108. Example:
  109. _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
  110. _GL_ARG_NONNULL ((1)));
  111. */
  112. #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
  113. _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
  114. #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
  115. _GL_EXTERN_C rettype rpl_func parameters_and_attributes
  116. /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
  117. declares the system function, named func, with the given prototype,
  118. consisting of return type, parameters, and attributes.
  119. Example:
  120. _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
  121. _GL_ARG_NONNULL ((1)));
  122. */
  123. #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
  124. _GL_EXTERN_C rettype func parameters_and_attributes
  125. /* _GL_CXXALIAS_RPL (func, rettype, parameters);
  126. declares a C++ alias called GNULIB_NAMESPACE::func
  127. that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
  128. Example:
  129. _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
  130. */
  131. #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
  132. _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
  133. #if defined __cplusplus && defined GNULIB_NAMESPACE
  134. # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
  135. namespace GNULIB_NAMESPACE \
  136. { \
  137. rettype (*const func) parameters = ::rpl_func; \
  138. } \
  139. _GL_EXTERN_C int _gl_cxxalias_dummy
  140. #else
  141. # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
  142. _GL_EXTERN_C int _gl_cxxalias_dummy
  143. #endif
  144. /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
  145. is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
  146. except that the C function rpl_func may have a slightly different
  147. declaration. A cast is used to silence the "invalid conversion" error
  148. that would otherwise occur. */
  149. #if defined __cplusplus && defined GNULIB_NAMESPACE
  150. # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
  151. namespace GNULIB_NAMESPACE \
  152. { \
  153. rettype (*const func) parameters = \
  154. reinterpret_cast<rettype(*)parameters>(::rpl_func); \
  155. } \
  156. _GL_EXTERN_C int _gl_cxxalias_dummy
  157. #else
  158. # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
  159. _GL_EXTERN_C int _gl_cxxalias_dummy
  160. #endif
  161. /* _GL_CXXALIAS_SYS (func, rettype, parameters);
  162. declares a C++ alias called GNULIB_NAMESPACE::func
  163. that redirects to the system provided function func, if GNULIB_NAMESPACE
  164. is defined.
  165. Example:
  166. _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
  167. */
  168. #if defined __cplusplus && defined GNULIB_NAMESPACE
  169. /* If we were to write
  170. rettype (*const func) parameters = ::func;
  171. like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
  172. better (remove an indirection through a 'static' pointer variable),
  173. but then the _GL_CXXALIASWARN macro below would cause a warning not only
  174. for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */
  175. # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
  176. namespace GNULIB_NAMESPACE \
  177. { \
  178. static rettype (*func) parameters = ::func; \
  179. } \
  180. _GL_EXTERN_C int _gl_cxxalias_dummy
  181. #else
  182. # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
  183. _GL_EXTERN_C int _gl_cxxalias_dummy
  184. #endif
  185. /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
  186. is like _GL_CXXALIAS_SYS (func, rettype, parameters);
  187. except that the C function func may have a slightly different declaration.
  188. A cast is used to silence the "invalid conversion" error that would
  189. otherwise occur. */
  190. #if defined __cplusplus && defined GNULIB_NAMESPACE
  191. # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
  192. namespace GNULIB_NAMESPACE \
  193. { \
  194. static rettype (*func) parameters = \
  195. reinterpret_cast<rettype(*)parameters>(::func); \
  196. } \
  197. _GL_EXTERN_C int _gl_cxxalias_dummy
  198. #else
  199. # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
  200. _GL_EXTERN_C int _gl_cxxalias_dummy
  201. #endif
  202. /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
  203. is like _GL_CXXALIAS_SYS (func, rettype, parameters);
  204. except that the C function is picked among a set of overloaded functions,
  205. namely the one with rettype2 and parameters2. Two consecutive casts
  206. are used to silence the "cannot find a match" and "invalid conversion"
  207. errors that would otherwise occur. */
  208. #if defined __cplusplus && defined GNULIB_NAMESPACE
  209. /* The outer cast must be a reinterpret_cast.
  210. The inner cast: When the function is defined as a set of overloaded
  211. functions, it works as a static_cast<>, choosing the designated variant.
  212. When the function is defined as a single variant, it works as a
  213. reinterpret_cast<>. The parenthesized cast syntax works both ways. */
  214. # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
  215. namespace GNULIB_NAMESPACE \
  216. { \
  217. static rettype (*func) parameters = \
  218. reinterpret_cast<rettype(*)parameters>( \
  219. (rettype2(*)parameters2)(::func)); \
  220. } \
  221. _GL_EXTERN_C int _gl_cxxalias_dummy
  222. #else
  223. # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
  224. _GL_EXTERN_C int _gl_cxxalias_dummy
  225. #endif
  226. /* _GL_CXXALIASWARN (func);
  227. causes a warning to be emitted when ::func is used but not when
  228. GNULIB_NAMESPACE::func is used. func must be defined without overloaded
  229. variants. */
  230. #if defined __cplusplus && defined GNULIB_NAMESPACE
  231. # define _GL_CXXALIASWARN(func) \
  232. _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
  233. # define _GL_CXXALIASWARN_1(func,namespace) \
  234. _GL_CXXALIASWARN_2 (func, namespace)
  235. /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
  236. we enable the warning only when not optimizing. */
  237. # if !__OPTIMIZE__
  238. # define _GL_CXXALIASWARN_2(func,namespace) \
  239. _GL_WARN_ON_USE (func, \
  240. "The symbol ::" #func " refers to the system function. " \
  241. "Use " #namespace "::" #func " instead.")
  242. # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
  243. # define _GL_CXXALIASWARN_2(func,namespace) \
  244. extern __typeof__ (func) func
  245. # else
  246. # define _GL_CXXALIASWARN_2(func,namespace) \
  247. _GL_EXTERN_C int _gl_cxxalias_dummy
  248. # endif
  249. #else
  250. # define _GL_CXXALIASWARN(func) \
  251. _GL_EXTERN_C int _gl_cxxalias_dummy
  252. #endif
  253. /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
  254. causes a warning to be emitted when the given overloaded variant of ::func
  255. is used but not when GNULIB_NAMESPACE::func is used. */
  256. #if defined __cplusplus && defined GNULIB_NAMESPACE
  257. # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
  258. _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
  259. GNULIB_NAMESPACE)
  260. # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
  261. _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
  262. /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
  263. we enable the warning only when not optimizing. */
  264. # if !__OPTIMIZE__
  265. # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
  266. _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
  267. "The symbol ::" #func " refers to the system function. " \
  268. "Use " #namespace "::" #func " instead.")
  269. # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
  270. # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
  271. extern __typeof__ (func) func
  272. # else
  273. # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
  274. _GL_EXTERN_C int _gl_cxxalias_dummy
  275. # endif
  276. #else
  277. # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
  278. _GL_EXTERN_C int _gl_cxxalias_dummy
  279. #endif
  280. #endif /* _GL_CXXDEFS_H */
  281. /* The definition of _GL_ARG_NONNULL is copied here. */
  282. /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
  283. that the values passed as arguments n, ..., m must be non-NULL pointers.
  284. n = 1 stands for the first argument, n = 2 for the second argument etc. */
  285. #ifndef _GL_ARG_NONNULL
  286. # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
  287. # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
  288. # else
  289. # define _GL_ARG_NONNULL(params)
  290. # endif
  291. #endif
  292. /* The definition of _GL_WARN_ON_USE is copied here. */
  293. #ifndef _GL_WARN_ON_USE
  294. # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
  295. /* A compiler attribute is available in gcc versions 4.3.0 and later. */
  296. # define _GL_WARN_ON_USE(function, message) \
  297. extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
  298. # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
  299. /* Verify the existence of the function. */
  300. # define _GL_WARN_ON_USE(function, message) \
  301. extern __typeof__ (function) function
  302. # else /* Unsupported. */
  303. # define _GL_WARN_ON_USE(function, message) \
  304. _GL_WARN_EXTERN_C int _gl_warn_on_use
  305. # endif
  306. #endif
  307. /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
  308. is like _GL_WARN_ON_USE (function, "string"), except that the function is
  309. declared with the given prototype, consisting of return type, parameters,
  310. and attributes.
  311. This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
  312. not work in this case. */
  313. #ifndef _GL_WARN_ON_USE_CXX
  314. # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
  315. # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
  316. extern rettype function parameters_and_attributes \
  317. __attribute__ ((__warning__ (msg)))
  318. # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
  319. /* Verify the existence of the function. */
  320. # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
  321. extern rettype function parameters_and_attributes
  322. # else /* Unsupported. */
  323. # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
  324. _GL_WARN_EXTERN_C int _gl_warn_on_use
  325. # endif
  326. #endif
  327. /* _GL_WARN_EXTERN_C declaration;
  328. performs the declaration with C linkage. */
  329. #ifndef _GL_WARN_EXTERN_C
  330. # if defined __cplusplus
  331. # define _GL_WARN_EXTERN_C extern "C"
  332. # else
  333. # define _GL_WARN_EXTERN_C extern
  334. # endif
  335. #endif
  336. /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
  337. On systems that don't define it, use the same value as GNU libintl. */
  338. #if !defined LC_MESSAGES
  339. # define LC_MESSAGES 1729
  340. #endif
  341. /* Bionic libc's 'struct lconv' is just a dummy. */
  342. #if 1
  343. # define lconv rpl_lconv
  344. struct lconv
  345. {
  346. /* All 'char *' are actually 'const char *'. */
  347. /* Members that depend on the LC_NUMERIC category of the locale. See
  348. <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
  349. /* Symbol used as decimal point. */
  350. char *decimal_point;
  351. /* Symbol used to separate groups of digits to the left of the decimal
  352. point. */
  353. char *thousands_sep;
  354. /* Definition of the size of groups of digits to the left of the decimal
  355. point. */
  356. char *grouping;
  357. /* Members that depend on the LC_MONETARY category of the locale. See
  358. <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
  359. /* Symbol used as decimal point. */
  360. char *mon_decimal_point;
  361. /* Symbol used to separate groups of digits to the left of the decimal
  362. point. */
  363. char *mon_thousands_sep;
  364. /* Definition of the size of groups of digits to the left of the decimal
  365. point. */
  366. char *mon_grouping;
  367. /* Sign used to indicate a value >= 0. */
  368. char *positive_sign;
  369. /* Sign used to indicate a value < 0. */
  370. char *negative_sign;
  371. /* For formatting local currency. */
  372. /* Currency symbol (3 characters) followed by separator (1 character). */
  373. char *currency_symbol;
  374. /* Number of digits after the decimal point. */
  375. char frac_digits;
  376. /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
  377. comes after the number. */
  378. char p_cs_precedes;
  379. /* For values >= 0: Position of the sign. */
  380. char p_sign_posn;
  381. /* For values >= 0: Placement of spaces between currency symbol, sign, and
  382. number. */
  383. char p_sep_by_space;
  384. /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
  385. comes after the number. */
  386. char n_cs_precedes;
  387. /* For values < 0: Position of the sign. */
  388. char n_sign_posn;
  389. /* For values < 0: Placement of spaces between currency symbol, sign, and
  390. number. */
  391. char n_sep_by_space;
  392. /* For formatting international currency. */
  393. /* Currency symbol (3 characters) followed by separator (1 character). */
  394. char *int_curr_symbol;
  395. /* Number of digits after the decimal point. */
  396. char int_frac_digits;
  397. /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
  398. comes after the number. */
  399. char int_p_cs_precedes;
  400. /* For values >= 0: Position of the sign. */
  401. char int_p_sign_posn;
  402. /* For values >= 0: Placement of spaces between currency symbol, sign, and
  403. number. */
  404. char int_p_sep_by_space;
  405. /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
  406. comes after the number. */
  407. char int_n_cs_precedes;
  408. /* For values < 0: Position of the sign. */
  409. char int_n_sign_posn;
  410. /* For values < 0: Placement of spaces between currency symbol, sign, and
  411. number. */
  412. char int_n_sep_by_space;
  413. };
  414. #endif
  415. #if 1
  416. # if 1
  417. # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  418. # undef localeconv
  419. # define localeconv rpl_localeconv
  420. # endif
  421. _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void));
  422. _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
  423. # else
  424. _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
  425. # endif
  426. _GL_CXXALIASWARN (localeconv);
  427. #elif 1
  428. # undef localeconv
  429. # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv
  430. #elif defined GNULIB_POSIXCHECK
  431. # undef localeconv
  432. # if HAVE_RAW_DECL_LOCALECONV
  433. _GL_WARN_ON_USE (localeconv,
  434. "localeconv returns too few information on some platforms - "
  435. "use gnulib module localeconv for portability");
  436. # endif
  437. #endif
  438. #if IN_M4_GNULIB_TESTS
  439. # if 1
  440. # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  441. # undef setlocale
  442. # define setlocale rpl_setlocale
  443. # define GNULIB_defined_setlocale 1
  444. # endif
  445. _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale));
  446. _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
  447. # else
  448. _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
  449. # endif
  450. _GL_CXXALIASWARN (setlocale);
  451. #elif defined GNULIB_POSIXCHECK
  452. # undef setlocale
  453. # if HAVE_RAW_DECL_SETLOCALE
  454. _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - "
  455. "use gnulib module setlocale for portability");
  456. # endif
  457. #endif
  458. #if 0
  459. # if 0
  460. # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  461. # undef duplocale
  462. # define duplocale rpl_duplocale
  463. # endif
  464. _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1)));
  465. _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale));
  466. # else
  467. # if 1
  468. _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale));
  469. # endif
  470. # endif
  471. # if 1
  472. _GL_CXXALIASWARN (duplocale);
  473. # endif
  474. #elif defined GNULIB_POSIXCHECK
  475. # undef duplocale
  476. # if HAVE_RAW_DECL_DUPLOCALE
  477. _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - "
  478. "use gnulib module duplocale for portability");
  479. # endif
  480. #endif
  481. #endif /* _GL_M4_LOCALE_H */
  482. #endif /* ! _GL_ALREADY_INCLUDING_LOCALE_H */
  483. #endif /* _GL_M4_LOCALE_H */