Home | History | Annotate | Line # | Download | only in import
      1 /* This file is automatically generated.  DO NOT EDIT! */
      2 /* Generated from: NetBSD: mknative-gdb,v 1.16 2023/07/31 17:09:59 christos Exp  */
      3 /* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
      4 
      5 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
      6 /* A POSIX <locale.h>.
      7    Copyright (C) 2007-2022 Free Software Foundation, Inc.
      8 
      9    This file is free software: you can redistribute it and/or modify
     10    it under the terms of the GNU Lesser General Public License as
     11    published by the Free Software Foundation; either version 2.1 of the
     12    License, or (at your option) any later version.
     13 
     14    This file is distributed in the hope that it will be useful,
     15    but WITHOUT ANY WARRANTY; without even the implied warranty of
     16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17    GNU Lesser General Public License for more details.
     18 
     19    You should have received a copy of the GNU Lesser General Public License
     20    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
     21 
     22 #if __GNUC__ >= 3
     23 #pragma GCC system_header
     24 #endif
     25 
     26 
     27 #if (defined _WIN32 && !defined __CYGWIN__ && defined __need_locale_t) \
     28     || defined _GL_ALREADY_INCLUDING_LOCALE_H
     29 
     30 /* Special invocation convention:
     31    - Inside mingw header files,
     32    - To handle Solaris header files (through Solaris 10) when combined
     33      with gettext's libintl.h.  */
     34 
     35 #include_next <locale.h>
     36 
     37 #else
     38 /* Normal invocation convention.  */
     39 
     40 #ifndef _GL_LOCALE_H
     41 
     42 #define _GL_ALREADY_INCLUDING_LOCALE_H
     43 
     44 /* The include_next requires a split double-inclusion guard.  */
     45 #include_next <locale.h>
     46 
     47 #undef _GL_ALREADY_INCLUDING_LOCALE_H
     48 
     49 #ifndef _GL_LOCALE_H
     50 #define _GL_LOCALE_H
     51 
     52 /* NetBSD 5.0 mis-defines NULL.  */
     53 #include <stddef.h>
     54 
     55 /* Mac OS X 10.5 defines the locale_t type in <xlocale.h>.  */
     56 #if 0
     57 # include <xlocale.h>
     58 #endif
     59 
     60 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
     61 /* C++ compatible function declaration macros.
     62    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     63 
     64    This program is free software: you can redistribute it and/or modify it
     65    under the terms of the GNU Lesser General Public License as published
     66    by the Free Software Foundation; either version 2 of the License, or
     67    (at your option) any later version.
     68 
     69    This program is distributed in the hope that it will be useful,
     70    but WITHOUT ANY WARRANTY; without even the implied warranty of
     71    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     72    Lesser General Public License for more details.
     73 
     74    You should have received a copy of the GNU Lesser General Public License
     75    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
     76 
     77 #ifndef _GL_CXXDEFS_H
     78 #define _GL_CXXDEFS_H
     79 
     80 /* Begin/end the GNULIB_NAMESPACE namespace.  */
     81 #if defined __cplusplus && defined GNULIB_NAMESPACE
     82 # define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
     83 # define _GL_END_NAMESPACE }
     84 #else
     85 # define _GL_BEGIN_NAMESPACE
     86 # define _GL_END_NAMESPACE
     87 #endif
     88 
     89 /* The three most frequent use cases of these macros are:
     90 
     91    * For providing a substitute for a function that is missing on some
     92      platforms, but is declared and works fine on the platforms on which
     93      it exists:
     94 
     95        #if @GNULIB_FOO@
     96        # if !@HAVE_FOO@
     97        _GL_FUNCDECL_SYS (foo, ...);
     98        # endif
     99        _GL_CXXALIAS_SYS (foo, ...);
    100        _GL_CXXALIASWARN (foo);
    101        #elif defined GNULIB_POSIXCHECK
    102        ...
    103        #endif
    104 
    105    * For providing a replacement for a function that exists on all platforms,
    106      but is broken/insufficient and needs to be replaced on some platforms:
    107 
    108        #if @GNULIB_FOO@
    109        # if @REPLACE_FOO@
    110        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    111        #   undef foo
    112        #   define foo rpl_foo
    113        #  endif
    114        _GL_FUNCDECL_RPL (foo, ...);
    115        _GL_CXXALIAS_RPL (foo, ...);
    116        # else
    117        _GL_CXXALIAS_SYS (foo, ...);
    118        # endif
    119        _GL_CXXALIASWARN (foo);
    120        #elif defined GNULIB_POSIXCHECK
    121        ...
    122        #endif
    123 
    124    * For providing a replacement for a function that exists on some platforms
    125      but is broken/insufficient and needs to be replaced on some of them and
    126      is additionally either missing or undeclared on some other platforms:
    127 
    128        #if @GNULIB_FOO@
    129        # if @REPLACE_FOO@
    130        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    131        #   undef foo
    132        #   define foo rpl_foo
    133        #  endif
    134        _GL_FUNCDECL_RPL (foo, ...);
    135        _GL_CXXALIAS_RPL (foo, ...);
    136        # else
    137        #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
    138        _GL_FUNCDECL_SYS (foo, ...);
    139        #  endif
    140        _GL_CXXALIAS_SYS (foo, ...);
    141        # endif
    142        _GL_CXXALIASWARN (foo);
    143        #elif defined GNULIB_POSIXCHECK
    144        ...
    145        #endif
    146 */
    147 
    148 /* _GL_EXTERN_C declaration;
    149    performs the declaration with C linkage.  */
    150 #if defined __cplusplus
    151 # define _GL_EXTERN_C extern "C"
    152 #else
    153 # define _GL_EXTERN_C extern
    154 #endif
    155 
    156 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
    157    declares a replacement function, named rpl_func, with the given prototype,
    158    consisting of return type, parameters, and attributes.
    159    Example:
    160      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
    161                                   _GL_ARG_NONNULL ((1)));
    162  */
    163 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
    164   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
    165 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
    166   _GL_EXTERN_C rettype rpl_func parameters_and_attributes
    167 
    168 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
    169    declares the system function, named func, with the given prototype,
    170    consisting of return type, parameters, and attributes.
    171    Example:
    172      _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
    173                                   _GL_ARG_NONNULL ((1)));
    174  */
    175 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
    176   _GL_EXTERN_C rettype func parameters_and_attributes
    177 
    178 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
    179    declares a C++ alias called GNULIB_NAMESPACE::func
    180    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
    181    Example:
    182      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
    183 
    184    Wrapping rpl_func in an object with an inline conversion operator
    185    avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
    186    actually used in the program.  */
    187 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
    188   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
    189 #if defined __cplusplus && defined GNULIB_NAMESPACE
    190 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
    191     namespace GNULIB_NAMESPACE                                \
    192     {                                                         \
    193       static const struct _gl_ ## func ## _wrapper            \
    194       {                                                       \
    195         typedef rettype (*type) parameters;                   \
    196                                                               \
    197         inline operator type () const                         \
    198         {                                                     \
    199           return ::rpl_func;                                  \
    200         }                                                     \
    201       } func = {};                                            \
    202     }                                                         \
    203     _GL_EXTERN_C int _gl_cxxalias_dummy
    204 #else
    205 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
    206     _GL_EXTERN_C int _gl_cxxalias_dummy
    207 #endif
    208 
    209 /* _GL_CXXALIAS_MDA (func, rettype, parameters);
    210    is to be used when func is a Microsoft deprecated alias, on native Windows.
    211    It declares a C++ alias called GNULIB_NAMESPACE::func
    212    that redirects to _func, if GNULIB_NAMESPACE is defined.
    213    Example:
    214      _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...));
    215  */
    216 #define _GL_CXXALIAS_MDA(func,rettype,parameters) \
    217   _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters)
    218 
    219 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
    220    is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
    221    except that the C function rpl_func may have a slightly different
    222    declaration.  A cast is used to silence the "invalid conversion" error
    223    that would otherwise occur.  */
    224 #if defined __cplusplus && defined GNULIB_NAMESPACE
    225 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
    226     namespace GNULIB_NAMESPACE                                     \
    227     {                                                              \
    228       static const struct _gl_ ## func ## _wrapper                 \
    229       {                                                            \
    230         typedef rettype (*type) parameters;                        \
    231                                                                    \
    232         inline operator type () const                              \
    233         {                                                          \
    234           return reinterpret_cast<type>(::rpl_func);               \
    235         }                                                          \
    236       } func = {};                                                 \
    237     }                                                              \
    238     _GL_EXTERN_C int _gl_cxxalias_dummy
    239 #else
    240 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
    241     _GL_EXTERN_C int _gl_cxxalias_dummy
    242 #endif
    243 
    244 /* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters);
    245    is like  _GL_CXXALIAS_MDA (func, rettype, parameters);
    246    except that the C function func may have a slightly different declaration.
    247    A cast is used to silence the "invalid conversion" error that would
    248    otherwise occur.  */
    249 #define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \
    250   _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters)
    251 
    252 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
    253    declares a C++ alias called GNULIB_NAMESPACE::func
    254    that redirects to the system provided function func, if GNULIB_NAMESPACE
    255    is defined.
    256    Example:
    257      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
    258 
    259    Wrapping func in an object with an inline conversion operator
    260    avoids a reference to func unless GNULIB_NAMESPACE::func is
    261    actually used in the program.  */
    262 #if defined __cplusplus && defined GNULIB_NAMESPACE
    263 # define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
    264     namespace GNULIB_NAMESPACE                                \
    265     {                                                         \
    266       static const struct _gl_ ## func ## _wrapper            \
    267       {                                                       \
    268         typedef rettype (*type) parameters;                   \
    269                                                               \
    270         inline operator type () const                         \
    271         {                                                     \
    272           return ::func;                                      \
    273         }                                                     \
    274       } func = {};                                            \
    275     }                                                         \
    276     _GL_EXTERN_C int _gl_cxxalias_dummy
    277 #else
    278 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
    279     _GL_EXTERN_C int _gl_cxxalias_dummy
    280 #endif
    281 
    282 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
    283    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
    284    except that the C function func may have a slightly different declaration.
    285    A cast is used to silence the "invalid conversion" error that would
    286    otherwise occur.  */
    287 #if defined __cplusplus && defined GNULIB_NAMESPACE
    288 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
    289     namespace GNULIB_NAMESPACE                          \
    290     {                                                   \
    291       static const struct _gl_ ## func ## _wrapper      \
    292       {                                                 \
    293         typedef rettype (*type) parameters;             \
    294                                                         \
    295         inline operator type () const                   \
    296         {                                               \
    297           return reinterpret_cast<type>(::func);        \
    298         }                                               \
    299       } func = {};                                      \
    300     }                                                   \
    301     _GL_EXTERN_C int _gl_cxxalias_dummy
    302 #else
    303 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
    304     _GL_EXTERN_C int _gl_cxxalias_dummy
    305 #endif
    306 
    307 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
    308    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
    309    except that the C function is picked among a set of overloaded functions,
    310    namely the one with rettype2 and parameters2.  Two consecutive casts
    311    are used to silence the "cannot find a match" and "invalid conversion"
    312    errors that would otherwise occur.  */
    313 #if defined __cplusplus && defined GNULIB_NAMESPACE
    314   /* The outer cast must be a reinterpret_cast.
    315      The inner cast: When the function is defined as a set of overloaded
    316      functions, it works as a static_cast<>, choosing the designated variant.
    317      When the function is defined as a single variant, it works as a
    318      reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
    319 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
    320     namespace GNULIB_NAMESPACE                                                \
    321     {                                                                         \
    322       static const struct _gl_ ## func ## _wrapper                            \
    323       {                                                                       \
    324         typedef rettype (*type) parameters;                                   \
    325                                                                               \
    326         inline operator type () const                                         \
    327         {                                                                     \
    328           return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
    329         }                                                                     \
    330       } func = {};                                                            \
    331     }                                                                         \
    332     _GL_EXTERN_C int _gl_cxxalias_dummy
    333 #else
    334 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
    335     _GL_EXTERN_C int _gl_cxxalias_dummy
    336 #endif
    337 
    338 /* _GL_CXXALIASWARN (func);
    339    causes a warning to be emitted when ::func is used but not when
    340    GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
    341    variants.  */
    342 #if defined __cplusplus && defined GNULIB_NAMESPACE
    343 # define _GL_CXXALIASWARN(func) \
    344    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
    345 # define _GL_CXXALIASWARN_1(func,namespace) \
    346    _GL_CXXALIASWARN_2 (func, namespace)
    347 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    348    we enable the warning only when not optimizing.  */
    349 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
    350 #  define _GL_CXXALIASWARN_2(func,namespace) \
    351     _GL_WARN_ON_USE (func, \
    352                      "The symbol ::" #func " refers to the system function. " \
    353                      "Use " #namespace "::" #func " instead.")
    354 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    355 #  define _GL_CXXALIASWARN_2(func,namespace) \
    356      extern __typeof__ (func) func
    357 # else
    358 #  define _GL_CXXALIASWARN_2(func,namespace) \
    359      _GL_EXTERN_C int _gl_cxxalias_dummy
    360 # endif
    361 #else
    362 # define _GL_CXXALIASWARN(func) \
    363     _GL_EXTERN_C int _gl_cxxalias_dummy
    364 #endif
    365 
    366 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
    367    causes a warning to be emitted when the given overloaded variant of ::func
    368    is used but not when GNULIB_NAMESPACE::func is used.  */
    369 #if defined __cplusplus && defined GNULIB_NAMESPACE
    370 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
    371    _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
    372                         GNULIB_NAMESPACE)
    373 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
    374    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
    375 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    376    we enable the warning only when not optimizing.  */
    377 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
    378 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    379     _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
    380                          "The symbol ::" #func " refers to the system function. " \
    381                          "Use " #namespace "::" #func " instead.")
    382 # else
    383 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    384      _GL_EXTERN_C int _gl_cxxalias_dummy
    385 # endif
    386 #else
    387 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
    388     _GL_EXTERN_C int _gl_cxxalias_dummy
    389 #endif
    390 
    391 #endif /* _GL_CXXDEFS_H */
    392 
    393 /* The definition of _GL_ARG_NONNULL is copied here.  */
    394 /* A C macro for declaring that specific arguments must not be NULL.
    395    Copyright (C) 2009-2022 Free Software Foundation, Inc.
    396 
    397    This program is free software: you can redistribute it and/or modify it
    398    under the terms of the GNU Lesser General Public License as published
    399    by the Free Software Foundation; either version 2 of the License, or
    400    (at your option) any later version.
    401 
    402    This program is distributed in the hope that it will be useful,
    403    but WITHOUT ANY WARRANTY; without even the implied warranty of
    404    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    405    Lesser General Public License for more details.
    406 
    407    You should have received a copy of the GNU Lesser General Public License
    408    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
    409 
    410 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
    411    that the values passed as arguments n, ..., m must be non-NULL pointers.
    412    n = 1 stands for the first argument, n = 2 for the second argument etc.  */
    413 #ifndef _GL_ARG_NONNULL
    414 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__
    415 #  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
    416 # else
    417 #  define _GL_ARG_NONNULL(params)
    418 # endif
    419 #endif
    420 
    421 /* The definition of _GL_WARN_ON_USE is copied here.  */
    422 /* A C macro for emitting warnings if a function is used.
    423    Copyright (C) 2010-2022 Free Software Foundation, Inc.
    424 
    425    This program is free software: you can redistribute it and/or modify it
    426    under the terms of the GNU Lesser General Public License as published
    427    by the Free Software Foundation; either version 2 of the License, or
    428    (at your option) any later version.
    429 
    430    This program is distributed in the hope that it will be useful,
    431    but WITHOUT ANY WARRANTY; without even the implied warranty of
    432    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    433    Lesser General Public License for more details.
    434 
    435    You should have received a copy of the GNU Lesser General Public License
    436    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
    437 
    438 /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
    439    for FUNCTION which will then trigger a compiler warning containing
    440    the text of "literal string" anywhere that function is called, if
    441    supported by the compiler.  If the compiler does not support this
    442    feature, the macro expands to an unused extern declaration.
    443 
    444    _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
    445    attribute used in _GL_WARN_ON_USE.  If the compiler does not support
    446    this feature, it expands to empty.
    447 
    448    These macros are useful for marking a function as a potential
    449    portability trap, with the intent that "literal string" include
    450    instructions on the replacement function that should be used
    451    instead.
    452    _GL_WARN_ON_USE is for functions with 'extern' linkage.
    453    _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
    454    linkage.
    455 
    456    However, one of the reasons that a function is a portability trap is
    457    if it has the wrong signature.  Declaring FUNCTION with a different
    458    signature in C is a compilation error, so this macro must use the
    459    same type as any existing declaration so that programs that avoid
    460    the problematic FUNCTION do not fail to compile merely because they
    461    included a header that poisoned the function.  But this implies that
    462    _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
    463    have a declaration.  Use of this macro implies that there must not
    464    be any other macro hiding the declaration of FUNCTION; but
    465    undefining FUNCTION first is part of the poisoning process anyway
    466    (although for symbols that are provided only via a macro, the result
    467    is a compilation error rather than a warning containing
    468    "literal string").  Also note that in C++, it is only safe to use if
    469    FUNCTION has no overloads.
    470 
    471    For an example, it is possible to poison 'getline' by:
    472    - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
    473      [getline]) in configure.ac, which potentially defines
    474      HAVE_RAW_DECL_GETLINE
    475    - adding this code to a header that wraps the system <stdio.h>:
    476      #undef getline
    477      #if HAVE_RAW_DECL_GETLINE
    478      _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
    479        "not universally present; use the gnulib module getline");
    480      #endif
    481 
    482    It is not possible to directly poison global variables.  But it is
    483    possible to write a wrapper accessor function, and poison that
    484    (less common usage, like &environ, will cause a compilation error
    485    rather than issue the nice warning, but the end result of informing
    486    the developer about their portability problem is still achieved):
    487      #if HAVE_RAW_DECL_ENVIRON
    488      static char ***
    489      rpl_environ (void) { return &environ; }
    490      _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
    491      # undef environ
    492      # define environ (*rpl_environ ())
    493      #endif
    494    or better (avoiding contradictory use of 'static' and 'extern'):
    495      #if HAVE_RAW_DECL_ENVIRON
    496      static char ***
    497      _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
    498      rpl_environ (void) { return &environ; }
    499      # undef environ
    500      # define environ (*rpl_environ ())
    501      #endif
    502    */
    503 #ifndef _GL_WARN_ON_USE
    504 
    505 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
    506 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
    507 #  define _GL_WARN_ON_USE(function, message) \
    508 _GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message)))
    509 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
    510   __attribute__ ((__warning__ (message)))
    511 # elif __clang_major__ >= 4
    512 /* Another compiler attribute is available in clang.  */
    513 #  define _GL_WARN_ON_USE(function, message) \
    514 _GL_WARN_EXTERN_C __typeof__ (function) function \
    515   __attribute__ ((__diagnose_if__ (1, message, "warning")))
    516 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
    517   __attribute__ ((__diagnose_if__ (1, message, "warning")))
    518 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    519 /* Verify the existence of the function.  */
    520 #  define _GL_WARN_ON_USE(function, message) \
    521 _GL_WARN_EXTERN_C __typeof__ (function) function
    522 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
    523 # else /* Unsupported.  */
    524 #  define _GL_WARN_ON_USE(function, message) \
    525 _GL_WARN_EXTERN_C int _gl_warn_on_use
    526 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
    527 # endif
    528 #endif
    529 
    530 /* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message")
    531    is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the
    532    function is declared with the given prototype, consisting of return type,
    533    parameters, and attributes.
    534    This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
    535    not work in this case.  */
    536 #ifndef _GL_WARN_ON_USE_CXX
    537 # if !defined __cplusplus
    538 #  define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    539      _GL_WARN_ON_USE (function, msg)
    540 # else
    541 #  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
    542 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
    543 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    544 extern rettype_gcc function parameters_and_attributes \
    545   __attribute__ ((__warning__ (msg)))
    546 #  elif __clang_major__ >= 4
    547 /* Another compiler attribute is available in clang.  */
    548 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    549 extern rettype_clang function parameters_and_attributes \
    550   __attribute__ ((__diagnose_if__ (1, msg, "warning")))
    551 #  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    552 /* Verify the existence of the function.  */
    553 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    554 extern rettype_gcc function parameters_and_attributes
    555 #  else /* Unsupported.  */
    556 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    557 _GL_WARN_EXTERN_C int _gl_warn_on_use
    558 #  endif
    559 # endif
    560 #endif
    561 
    562 /* _GL_WARN_EXTERN_C declaration;
    563    performs the declaration with C linkage.  */
    564 #ifndef _GL_WARN_EXTERN_C
    565 # if defined __cplusplus
    566 #  define _GL_WARN_EXTERN_C extern "C"
    567 # else
    568 #  define _GL_WARN_EXTERN_C extern
    569 # endif
    570 #endif
    571 
    572 /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
    573    On systems that don't define it, use the same value as GNU libintl.  */
    574 #if !defined LC_MESSAGES
    575 # define LC_MESSAGES 1729
    576 #endif
    577 
    578 /* On native Windows with MSVC, 'struct lconv' lacks the members int_p_* and
    579    int_n_*.  Instead of overriding 'struct lconv', merely define these member
    580    names as macros.  This avoids trouble in C++ mode.  */
    581 #if defined _MSC_VER
    582 # define int_p_cs_precedes   p_cs_precedes
    583 # define int_p_sign_posn     p_sign_posn
    584 # define int_p_sep_by_space  p_sep_by_space
    585 # define int_n_cs_precedes   n_cs_precedes
    586 # define int_n_sign_posn     n_sign_posn
    587 # define int_n_sep_by_space  n_sep_by_space
    588 #endif
    589 
    590 /* Bionic libc's 'struct lconv' is just a dummy.  */
    591 #if 0
    592 # define lconv rpl_lconv
    593 struct lconv
    594 {
    595   /* All 'char *' are actually 'const char *'.  */
    596 
    597   /* Members that depend on the LC_NUMERIC category of the locale.  See
    598      <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
    599 
    600   /* Symbol used as decimal point.  */
    601   char *decimal_point;
    602   /* Symbol used to separate groups of digits to the left of the decimal
    603      point.  */
    604   char *thousands_sep;
    605   /* Definition of the size of groups of digits to the left of the decimal
    606      point.  */
    607   char *grouping;
    608 
    609   /* Members that depend on the LC_MONETARY category of the locale.  See
    610      <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
    611 
    612   /* Symbol used as decimal point.  */
    613   char *mon_decimal_point;
    614   /* Symbol used to separate groups of digits to the left of the decimal
    615      point.  */
    616   char *mon_thousands_sep;
    617   /* Definition of the size of groups of digits to the left of the decimal
    618      point.  */
    619   char *mon_grouping;
    620   /* Sign used to indicate a value >= 0.  */
    621   char *positive_sign;
    622   /* Sign used to indicate a value < 0.  */
    623   char *negative_sign;
    624 
    625   /* For formatting local currency.  */
    626   /* Currency symbol (3 characters) followed by separator (1 character).  */
    627   char *currency_symbol;
    628   /* Number of digits after the decimal point.  */
    629   char frac_digits;
    630   /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
    631      comes after the number.  */
    632   char p_cs_precedes;
    633   /* For values >= 0: Position of the sign.  */
    634   char p_sign_posn;
    635   /* For values >= 0: Placement of spaces between currency symbol, sign, and
    636      number.  */
    637   char p_sep_by_space;
    638   /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
    639      comes after the number.  */
    640   char n_cs_precedes;
    641   /* For values < 0: Position of the sign.  */
    642   char n_sign_posn;
    643   /* For values < 0: Placement of spaces between currency symbol, sign, and
    644      number.  */
    645   char n_sep_by_space;
    646 
    647   /* For formatting international currency.  */
    648   /* Currency symbol (3 characters) followed by separator (1 character).  */
    649   char *int_curr_symbol;
    650   /* Number of digits after the decimal point.  */
    651   char int_frac_digits;
    652   /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it
    653      comes after the number.  */
    654   char int_p_cs_precedes;
    655   /* For values >= 0: Position of the sign.  */
    656   char int_p_sign_posn;
    657   /* For values >= 0: Placement of spaces between currency symbol, sign, and
    658      number.  */
    659   char int_p_sep_by_space;
    660   /* For values < 0: 1 if the currency symbol precedes the number, 0 if it
    661      comes after the number.  */
    662   char int_n_cs_precedes;
    663   /* For values < 0: Position of the sign.  */
    664   char int_n_sign_posn;
    665   /* For values < 0: Placement of spaces between currency symbol, sign, and
    666      number.  */
    667   char int_n_sep_by_space;
    668 };
    669 #endif
    670 
    671 #if 0
    672 # if 0
    673 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    674 #   undef localeconv
    675 #   define localeconv rpl_localeconv
    676 #  endif
    677 _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void));
    678 _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
    679 # else
    680 _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
    681 # endif
    682 # if __GLIBC__ >= 2
    683 _GL_CXXALIASWARN (localeconv);
    684 # endif
    685 #elif 0
    686 # undef localeconv
    687 # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv
    688 #elif defined GNULIB_POSIXCHECK
    689 # undef localeconv
    690 # if HAVE_RAW_DECL_LOCALECONV
    691 _GL_WARN_ON_USE (localeconv,
    692                  "localeconv returns too few information on some platforms - "
    693                  "use gnulib module localeconv for portability");
    694 # endif
    695 #endif
    696 
    697 #if 0
    698 # if 0
    699 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    700 #   undef setlocale
    701 #   define setlocale rpl_setlocale
    702 #   define GNULIB_defined_setlocale 1
    703 #  endif
    704 _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale));
    705 _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
    706 # else
    707 _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
    708 # endif
    709 # if __GLIBC__ >= 2
    710 _GL_CXXALIASWARN (setlocale);
    711 # endif
    712 #elif defined GNULIB_POSIXCHECK
    713 # undef setlocale
    714 # if HAVE_RAW_DECL_SETLOCALE
    715 _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - "
    716                  "use gnulib module setlocale for portability");
    717 # endif
    718 #endif
    719 
    720 #if 1
    721 /* Included here for convenience.  */
    722 # include "setlocale_null.h"
    723 #endif
    724 
    725 #if /*@GNULIB_NEWLOCALE@ ||*/ (0 && 0 && 1)
    726 # if 0
    727 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    728 #   undef newlocale
    729 #   define newlocale rpl_newlocale
    730 #   define GNULIB_defined_newlocale 1
    731 #  endif
    732 _GL_FUNCDECL_RPL (newlocale, locale_t,
    733                   (int category_mask, const char *name, locale_t base)
    734                   _GL_ARG_NONNULL ((2)));
    735 _GL_CXXALIAS_RPL (newlocale, locale_t,
    736                   (int category_mask, const char *name, locale_t base));
    737 # else
    738 #  if 1
    739 _GL_CXXALIAS_SYS (newlocale, locale_t,
    740                   (int category_mask, const char *name, locale_t base));
    741 #  endif
    742 # endif
    743 # if 1
    744 _GL_CXXALIASWARN (newlocale);
    745 # endif
    746 # if 1 || 0
    747 #  ifndef HAVE_WORKING_NEWLOCALE
    748 #   define HAVE_WORKING_NEWLOCALE 1
    749 #  endif
    750 # endif
    751 #elif defined GNULIB_POSIXCHECK
    752 # undef newlocale
    753 # if HAVE_RAW_DECL_NEWLOCALE
    754 _GL_WARN_ON_USE (newlocale, "newlocale is not portable");
    755 # endif
    756 #endif
    757 
    758 #if 0 || (0 && 0 && 1)
    759 # if 0
    760 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    761 #   undef duplocale
    762 #   define duplocale rpl_duplocale
    763 #   define GNULIB_defined_duplocale 1
    764 #  endif
    765 _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1)));
    766 _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale));
    767 # else
    768 #  if 1
    769 _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale));
    770 #  endif
    771 # endif
    772 # if 1
    773 _GL_CXXALIASWARN (duplocale);
    774 # endif
    775 # if 1 || 0
    776 #  ifndef HAVE_WORKING_DUPLOCALE
    777 #   define HAVE_WORKING_DUPLOCALE 1
    778 #  endif
    779 # endif
    780 #elif defined GNULIB_POSIXCHECK
    781 # undef duplocale
    782 # if HAVE_RAW_DECL_DUPLOCALE
    783 _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - "
    784                  "use gnulib module duplocale for portability");
    785 # endif
    786 #endif
    787 
    788 #if /*@GNULIB_FREELOCALE@ ||*/ (0 && 0 && 1)
    789 # if 0
    790 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    791 #   undef freelocale
    792 #   define freelocale rpl_freelocale
    793 #   define GNULIB_defined_freelocale 1
    794 #  endif
    795 _GL_FUNCDECL_RPL (freelocale, void, (locale_t locale) _GL_ARG_NONNULL ((1)));
    796 _GL_CXXALIAS_RPL (freelocale, void, (locale_t locale));
    797 # else
    798 #  if 1
    799 /* Need to cast, because on FreeBSD and Mac OS X 10.13, the return type is
    800                                    int.  */
    801 _GL_CXXALIAS_SYS_CAST (freelocale, void, (locale_t locale));
    802 #  endif
    803 # endif
    804 # if 1
    805 _GL_CXXALIASWARN (freelocale);
    806 # endif
    807 #elif defined GNULIB_POSIXCHECK
    808 # undef freelocale
    809 # if HAVE_RAW_DECL_FREELOCALE
    810 _GL_WARN_ON_USE (freelocale, "freelocale is not portable");
    811 # endif
    812 #endif
    813 
    814 #endif /* _GL_LOCALE_H */
    815 #endif /* _GL_LOCALE_H */
    816 #endif /* !(__need_locale_t || _GL_ALREADY_INCLUDING_LOCALE_H) */
    817