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 /* Substitute for and wrapper around <fnmatch.h>.
      7    Copyright (C) 1991-1993, 1996-1999, 2001-2003, 2005, 2007, 2009-2022 Free
      8    Software Foundation, Inc.
      9 
     10    This file is part of the GNU C Library.
     11 
     12    This file is free software: you can redistribute it and/or modify
     13    it under the terms of the GNU Lesser General Public License as
     14    published by the Free Software Foundation; either version 2.1 of the
     15    License, or (at your option) any later version.
     16 
     17    This file is distributed in the hope that it will be useful,
     18    but WITHOUT ANY WARRANTY; without even the implied warranty of
     19    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     20    GNU Lesser General Public License for more details.
     21 
     22    You should have received a copy of the GNU Lesser General Public License
     23    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
     24 
     25 #ifndef _GL_FNMATCH_H
     26 
     27 #if __GNUC__ >= 3
     28 #pragma GCC system_header
     29 #endif
     30 
     31 
     32 /* The include_next requires a split double-inclusion guard.  */
     33 #if 1 && !1
     34 # include_next <fnmatch.h>
     35 #endif
     36 
     37 #ifndef _GL_FNMATCH_H
     38 #define _GL_FNMATCH_H
     39 
     40 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
     41 /* C++ compatible function declaration macros.
     42    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     43 
     44    This program is free software: you can redistribute it and/or modify it
     45    under the terms of the GNU Lesser General Public License as published
     46    by the Free Software Foundation; either version 2 of the License, or
     47    (at your option) any later version.
     48 
     49    This program is distributed in the hope that it will be useful,
     50    but WITHOUT ANY WARRANTY; without even the implied warranty of
     51    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     52    Lesser General Public License for more details.
     53 
     54    You should have received a copy of the GNU Lesser General Public License
     55    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
     56 
     57 #ifndef _GL_CXXDEFS_H
     58 #define _GL_CXXDEFS_H
     59 
     60 /* Begin/end the GNULIB_NAMESPACE namespace.  */
     61 #if defined __cplusplus && defined GNULIB_NAMESPACE
     62 # define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
     63 # define _GL_END_NAMESPACE }
     64 #else
     65 # define _GL_BEGIN_NAMESPACE
     66 # define _GL_END_NAMESPACE
     67 #endif
     68 
     69 /* The three most frequent use cases of these macros are:
     70 
     71    * For providing a substitute for a function that is missing on some
     72      platforms, but is declared and works fine on the platforms on which
     73      it exists:
     74 
     75        #if @GNULIB_FOO@
     76        # if !@HAVE_FOO@
     77        _GL_FUNCDECL_SYS (foo, ...);
     78        # endif
     79        _GL_CXXALIAS_SYS (foo, ...);
     80        _GL_CXXALIASWARN (foo);
     81        #elif defined GNULIB_POSIXCHECK
     82        ...
     83        #endif
     84 
     85    * For providing a replacement for a function that exists on all platforms,
     86      but is broken/insufficient and needs to be replaced on some platforms:
     87 
     88        #if @GNULIB_FOO@
     89        # if @REPLACE_FOO@
     90        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
     91        #   undef foo
     92        #   define foo rpl_foo
     93        #  endif
     94        _GL_FUNCDECL_RPL (foo, ...);
     95        _GL_CXXALIAS_RPL (foo, ...);
     96        # else
     97        _GL_CXXALIAS_SYS (foo, ...);
     98        # endif
     99        _GL_CXXALIASWARN (foo);
    100        #elif defined GNULIB_POSIXCHECK
    101        ...
    102        #endif
    103 
    104    * For providing a replacement for a function that exists on some platforms
    105      but is broken/insufficient and needs to be replaced on some of them and
    106      is additionally either missing or undeclared on some other 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        #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
    118        _GL_FUNCDECL_SYS (foo, ...);
    119        #  endif
    120        _GL_CXXALIAS_SYS (foo, ...);
    121        # endif
    122        _GL_CXXALIASWARN (foo);
    123        #elif defined GNULIB_POSIXCHECK
    124        ...
    125        #endif
    126 */
    127 
    128 /* _GL_EXTERN_C declaration;
    129    performs the declaration with C linkage.  */
    130 #if defined __cplusplus
    131 # define _GL_EXTERN_C extern "C"
    132 #else
    133 # define _GL_EXTERN_C extern
    134 #endif
    135 
    136 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
    137    declares a replacement function, named rpl_func, with the given prototype,
    138    consisting of return type, parameters, and attributes.
    139    Example:
    140      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
    141                                   _GL_ARG_NONNULL ((1)));
    142  */
    143 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
    144   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
    145 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
    146   _GL_EXTERN_C rettype rpl_func parameters_and_attributes
    147 
    148 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
    149    declares the system function, named func, with the given prototype,
    150    consisting of return type, parameters, and attributes.
    151    Example:
    152      _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
    153                                   _GL_ARG_NONNULL ((1)));
    154  */
    155 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
    156   _GL_EXTERN_C rettype func parameters_and_attributes
    157 
    158 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
    159    declares a C++ alias called GNULIB_NAMESPACE::func
    160    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
    161    Example:
    162      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
    163 
    164    Wrapping rpl_func in an object with an inline conversion operator
    165    avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
    166    actually used in the program.  */
    167 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
    168   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
    169 #if defined __cplusplus && defined GNULIB_NAMESPACE
    170 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
    171     namespace GNULIB_NAMESPACE                                \
    172     {                                                         \
    173       static const struct _gl_ ## func ## _wrapper            \
    174       {                                                       \
    175         typedef rettype (*type) parameters;                   \
    176                                                               \
    177         inline operator type () const                         \
    178         {                                                     \
    179           return ::rpl_func;                                  \
    180         }                                                     \
    181       } func = {};                                            \
    182     }                                                         \
    183     _GL_EXTERN_C int _gl_cxxalias_dummy
    184 #else
    185 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
    186     _GL_EXTERN_C int _gl_cxxalias_dummy
    187 #endif
    188 
    189 /* _GL_CXXALIAS_MDA (func, rettype, parameters);
    190    is to be used when func is a Microsoft deprecated alias, on native Windows.
    191    It declares a C++ alias called GNULIB_NAMESPACE::func
    192    that redirects to _func, if GNULIB_NAMESPACE is defined.
    193    Example:
    194      _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...));
    195  */
    196 #define _GL_CXXALIAS_MDA(func,rettype,parameters) \
    197   _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters)
    198 
    199 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
    200    is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
    201    except that the C function rpl_func may have a slightly different
    202    declaration.  A cast is used to silence the "invalid conversion" error
    203    that would otherwise occur.  */
    204 #if defined __cplusplus && defined GNULIB_NAMESPACE
    205 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
    206     namespace GNULIB_NAMESPACE                                     \
    207     {                                                              \
    208       static const struct _gl_ ## func ## _wrapper                 \
    209       {                                                            \
    210         typedef rettype (*type) parameters;                        \
    211                                                                    \
    212         inline operator type () const                              \
    213         {                                                          \
    214           return reinterpret_cast<type>(::rpl_func);               \
    215         }                                                          \
    216       } func = {};                                                 \
    217     }                                                              \
    218     _GL_EXTERN_C int _gl_cxxalias_dummy
    219 #else
    220 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
    221     _GL_EXTERN_C int _gl_cxxalias_dummy
    222 #endif
    223 
    224 /* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters);
    225    is like  _GL_CXXALIAS_MDA (func, rettype, parameters);
    226    except that the C function func may have a slightly different declaration.
    227    A cast is used to silence the "invalid conversion" error that would
    228    otherwise occur.  */
    229 #define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \
    230   _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters)
    231 
    232 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
    233    declares a C++ alias called GNULIB_NAMESPACE::func
    234    that redirects to the system provided function func, if GNULIB_NAMESPACE
    235    is defined.
    236    Example:
    237      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
    238 
    239    Wrapping func in an object with an inline conversion operator
    240    avoids a reference to func unless GNULIB_NAMESPACE::func is
    241    actually used in the program.  */
    242 #if defined __cplusplus && defined GNULIB_NAMESPACE
    243 # define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
    244     namespace GNULIB_NAMESPACE                                \
    245     {                                                         \
    246       static const struct _gl_ ## func ## _wrapper            \
    247       {                                                       \
    248         typedef rettype (*type) parameters;                   \
    249                                                               \
    250         inline operator type () const                         \
    251         {                                                     \
    252           return ::func;                                      \
    253         }                                                     \
    254       } func = {};                                            \
    255     }                                                         \
    256     _GL_EXTERN_C int _gl_cxxalias_dummy
    257 #else
    258 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
    259     _GL_EXTERN_C int _gl_cxxalias_dummy
    260 #endif
    261 
    262 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
    263    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
    264    except that the C function func may have a slightly different declaration.
    265    A cast is used to silence the "invalid conversion" error that would
    266    otherwise occur.  */
    267 #if defined __cplusplus && defined GNULIB_NAMESPACE
    268 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
    269     namespace GNULIB_NAMESPACE                          \
    270     {                                                   \
    271       static const struct _gl_ ## func ## _wrapper      \
    272       {                                                 \
    273         typedef rettype (*type) parameters;             \
    274                                                         \
    275         inline operator type () const                   \
    276         {                                               \
    277           return reinterpret_cast<type>(::func);        \
    278         }                                               \
    279       } func = {};                                      \
    280     }                                                   \
    281     _GL_EXTERN_C int _gl_cxxalias_dummy
    282 #else
    283 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
    284     _GL_EXTERN_C int _gl_cxxalias_dummy
    285 #endif
    286 
    287 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
    288    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
    289    except that the C function is picked among a set of overloaded functions,
    290    namely the one with rettype2 and parameters2.  Two consecutive casts
    291    are used to silence the "cannot find a match" and "invalid conversion"
    292    errors that would otherwise occur.  */
    293 #if defined __cplusplus && defined GNULIB_NAMESPACE
    294   /* The outer cast must be a reinterpret_cast.
    295      The inner cast: When the function is defined as a set of overloaded
    296      functions, it works as a static_cast<>, choosing the designated variant.
    297      When the function is defined as a single variant, it works as a
    298      reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
    299 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
    300     namespace GNULIB_NAMESPACE                                                \
    301     {                                                                         \
    302       static const struct _gl_ ## func ## _wrapper                            \
    303       {                                                                       \
    304         typedef rettype (*type) parameters;                                   \
    305                                                                               \
    306         inline operator type () const                                         \
    307         {                                                                     \
    308           return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
    309         }                                                                     \
    310       } func = {};                                                            \
    311     }                                                                         \
    312     _GL_EXTERN_C int _gl_cxxalias_dummy
    313 #else
    314 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
    315     _GL_EXTERN_C int _gl_cxxalias_dummy
    316 #endif
    317 
    318 /* _GL_CXXALIASWARN (func);
    319    causes a warning to be emitted when ::func is used but not when
    320    GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
    321    variants.  */
    322 #if defined __cplusplus && defined GNULIB_NAMESPACE
    323 # define _GL_CXXALIASWARN(func) \
    324    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
    325 # define _GL_CXXALIASWARN_1(func,namespace) \
    326    _GL_CXXALIASWARN_2 (func, namespace)
    327 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    328    we enable the warning only when not optimizing.  */
    329 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
    330 #  define _GL_CXXALIASWARN_2(func,namespace) \
    331     _GL_WARN_ON_USE (func, \
    332                      "The symbol ::" #func " refers to the system function. " \
    333                      "Use " #namespace "::" #func " instead.")
    334 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    335 #  define _GL_CXXALIASWARN_2(func,namespace) \
    336      extern __typeof__ (func) func
    337 # else
    338 #  define _GL_CXXALIASWARN_2(func,namespace) \
    339      _GL_EXTERN_C int _gl_cxxalias_dummy
    340 # endif
    341 #else
    342 # define _GL_CXXALIASWARN(func) \
    343     _GL_EXTERN_C int _gl_cxxalias_dummy
    344 #endif
    345 
    346 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
    347    causes a warning to be emitted when the given overloaded variant of ::func
    348    is used but not when GNULIB_NAMESPACE::func is used.  */
    349 #if defined __cplusplus && defined GNULIB_NAMESPACE
    350 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
    351    _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
    352                         GNULIB_NAMESPACE)
    353 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
    354    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
    355 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
    356    we enable the warning only when not optimizing.  */
    357 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
    358 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    359     _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
    360                          "The symbol ::" #func " refers to the system function. " \
    361                          "Use " #namespace "::" #func " instead.")
    362 # else
    363 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
    364      _GL_EXTERN_C int _gl_cxxalias_dummy
    365 # endif
    366 #else
    367 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
    368     _GL_EXTERN_C int _gl_cxxalias_dummy
    369 #endif
    370 
    371 #endif /* _GL_CXXDEFS_H */
    372 
    373 /* The definition of _GL_ARG_NONNULL is copied here.  */
    374 /* A C macro for declaring that specific arguments must not be NULL.
    375    Copyright (C) 2009-2022 Free Software Foundation, Inc.
    376 
    377    This program is free software: you can redistribute it and/or modify it
    378    under the terms of the GNU Lesser General Public License as published
    379    by the Free Software Foundation; either version 2 of the License, or
    380    (at your option) any later version.
    381 
    382    This program is distributed in the hope that it will be useful,
    383    but WITHOUT ANY WARRANTY; without even the implied warranty of
    384    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    385    Lesser General Public License for more details.
    386 
    387    You should have received a copy of the GNU Lesser General Public License
    388    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
    389 
    390 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
    391    that the values passed as arguments n, ..., m must be non-NULL pointers.
    392    n = 1 stands for the first argument, n = 2 for the second argument etc.  */
    393 #ifndef _GL_ARG_NONNULL
    394 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__
    395 #  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
    396 # else
    397 #  define _GL_ARG_NONNULL(params)
    398 # endif
    399 #endif
    400 
    401 /* The definition of _GL_WARN_ON_USE is copied here.  */
    402 /* A C macro for emitting warnings if a function is used.
    403    Copyright (C) 2010-2022 Free Software Foundation, Inc.
    404 
    405    This program is free software: you can redistribute it and/or modify it
    406    under the terms of the GNU Lesser General Public License as published
    407    by the Free Software Foundation; either version 2 of the License, or
    408    (at your option) any later version.
    409 
    410    This program is distributed in the hope that it will be useful,
    411    but WITHOUT ANY WARRANTY; without even the implied warranty of
    412    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    413    Lesser General Public License for more details.
    414 
    415    You should have received a copy of the GNU Lesser General Public License
    416    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
    417 
    418 /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
    419    for FUNCTION which will then trigger a compiler warning containing
    420    the text of "literal string" anywhere that function is called, if
    421    supported by the compiler.  If the compiler does not support this
    422    feature, the macro expands to an unused extern declaration.
    423 
    424    _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
    425    attribute used in _GL_WARN_ON_USE.  If the compiler does not support
    426    this feature, it expands to empty.
    427 
    428    These macros are useful for marking a function as a potential
    429    portability trap, with the intent that "literal string" include
    430    instructions on the replacement function that should be used
    431    instead.
    432    _GL_WARN_ON_USE is for functions with 'extern' linkage.
    433    _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
    434    linkage.
    435 
    436    However, one of the reasons that a function is a portability trap is
    437    if it has the wrong signature.  Declaring FUNCTION with a different
    438    signature in C is a compilation error, so this macro must use the
    439    same type as any existing declaration so that programs that avoid
    440    the problematic FUNCTION do not fail to compile merely because they
    441    included a header that poisoned the function.  But this implies that
    442    _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
    443    have a declaration.  Use of this macro implies that there must not
    444    be any other macro hiding the declaration of FUNCTION; but
    445    undefining FUNCTION first is part of the poisoning process anyway
    446    (although for symbols that are provided only via a macro, the result
    447    is a compilation error rather than a warning containing
    448    "literal string").  Also note that in C++, it is only safe to use if
    449    FUNCTION has no overloads.
    450 
    451    For an example, it is possible to poison 'getline' by:
    452    - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
    453      [getline]) in configure.ac, which potentially defines
    454      HAVE_RAW_DECL_GETLINE
    455    - adding this code to a header that wraps the system <stdio.h>:
    456      #undef getline
    457      #if HAVE_RAW_DECL_GETLINE
    458      _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
    459        "not universally present; use the gnulib module getline");
    460      #endif
    461 
    462    It is not possible to directly poison global variables.  But it is
    463    possible to write a wrapper accessor function, and poison that
    464    (less common usage, like &environ, will cause a compilation error
    465    rather than issue the nice warning, but the end result of informing
    466    the developer about their portability problem is still achieved):
    467      #if HAVE_RAW_DECL_ENVIRON
    468      static char ***
    469      rpl_environ (void) { return &environ; }
    470      _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
    471      # undef environ
    472      # define environ (*rpl_environ ())
    473      #endif
    474    or better (avoiding contradictory use of 'static' and 'extern'):
    475      #if HAVE_RAW_DECL_ENVIRON
    476      static char ***
    477      _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
    478      rpl_environ (void) { return &environ; }
    479      # undef environ
    480      # define environ (*rpl_environ ())
    481      #endif
    482    */
    483 #ifndef _GL_WARN_ON_USE
    484 
    485 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
    486 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
    487 #  define _GL_WARN_ON_USE(function, message) \
    488 _GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message)))
    489 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
    490   __attribute__ ((__warning__ (message)))
    491 # elif __clang_major__ >= 4
    492 /* Another compiler attribute is available in clang.  */
    493 #  define _GL_WARN_ON_USE(function, message) \
    494 _GL_WARN_EXTERN_C __typeof__ (function) function \
    495   __attribute__ ((__diagnose_if__ (1, message, "warning")))
    496 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
    497   __attribute__ ((__diagnose_if__ (1, message, "warning")))
    498 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    499 /* Verify the existence of the function.  */
    500 #  define _GL_WARN_ON_USE(function, message) \
    501 _GL_WARN_EXTERN_C __typeof__ (function) function
    502 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
    503 # else /* Unsupported.  */
    504 #  define _GL_WARN_ON_USE(function, message) \
    505 _GL_WARN_EXTERN_C int _gl_warn_on_use
    506 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
    507 # endif
    508 #endif
    509 
    510 /* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message")
    511    is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the
    512    function is declared with the given prototype, consisting of return type,
    513    parameters, and attributes.
    514    This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
    515    not work in this case.  */
    516 #ifndef _GL_WARN_ON_USE_CXX
    517 # if !defined __cplusplus
    518 #  define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    519      _GL_WARN_ON_USE (function, msg)
    520 # else
    521 #  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
    522 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
    523 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    524 extern rettype_gcc function parameters_and_attributes \
    525   __attribute__ ((__warning__ (msg)))
    526 #  elif __clang_major__ >= 4
    527 /* Another compiler attribute is available in clang.  */
    528 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    529 extern rettype_clang function parameters_and_attributes \
    530   __attribute__ ((__diagnose_if__ (1, msg, "warning")))
    531 #  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
    532 /* Verify the existence of the function.  */
    533 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    534 extern rettype_gcc function parameters_and_attributes
    535 #  else /* Unsupported.  */
    536 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
    537 _GL_WARN_EXTERN_C int _gl_warn_on_use
    538 #  endif
    539 # endif
    540 #endif
    541 
    542 /* _GL_WARN_EXTERN_C declaration;
    543    performs the declaration with C linkage.  */
    544 #ifndef _GL_WARN_EXTERN_C
    545 # if defined __cplusplus
    546 #  define _GL_WARN_EXTERN_C extern "C"
    547 # else
    548 #  define _GL_WARN_EXTERN_C extern
    549 # endif
    550 #endif
    551 
    552 #if !1 || 1
    553 
    554 /* We #undef these before defining them because some losing systems
    555    (HP-UX A.08.07 for example) define these in <unistd.h>.  */
    556 #undef  FNM_PATHNAME
    557 #undef  FNM_NOESCAPE
    558 #undef  FNM_PERIOD
    559 
    560 /* Bits set in the FLAGS argument to 'fnmatch'.  */
    561 #define FNM_PATHNAME    (1 << 0) /* No wildcard can ever match '/'.  */
    562 #define FNM_NOESCAPE    (1 << 1) /* Backslashes don't quote special chars.  */
    563 #define FNM_PERIOD      (1 << 2) /* Leading '.' is matched only explicitly.  */
    564 
    565 #if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
    566 # define FNM_FILE_NAME   FNM_PATHNAME   /* Preferred GNU name.  */
    567 # define FNM_LEADING_DIR (1 << 3)       /* Ignore '/...' after a match.  */
    568 # define FNM_CASEFOLD    (1 << 4)       /* Compare without regard to case.  */
    569 # define FNM_EXTMATCH    (1 << 5)       /* Use ksh-like extended matching. */
    570 #endif
    571 
    572 /* Value returned by 'fnmatch' if STRING does not match PATTERN.  */
    573 #define FNM_NOMATCH     1
    574 
    575 /* This value is returned if the implementation does not support
    576    'fnmatch'.  Since this is not the case here it will never be
    577    returned but the conformance test suites still require the symbol
    578    to be defined.  */
    579 #ifdef _XOPEN_SOURCE
    580 # define FNM_NOSYS      (-1)
    581 #endif
    582 
    583 #endif
    584 
    585 
    586 #if 1
    587 /* Match NAME against the file name pattern PATTERN,
    588    returning zero if it matches, FNM_NOMATCH if not.  */
    589 # if 1
    590 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    591 #   define fnmatch rpl_fnmatch
    592 #  endif
    593 _GL_FUNCDECL_RPL (fnmatch, int,
    594                   (const char *pattern, const char *name, int flags)
    595                   _GL_ARG_NONNULL ((1, 2)));
    596 _GL_CXXALIAS_RPL (fnmatch, int,
    597                   (const char *pattern, const char *name, int flags));
    598 # else
    599 #  if !1
    600 _GL_FUNCDECL_SYS (fnmatch, int,
    601                   (const char *pattern, const char *name, int flags)
    602                   _GL_ARG_NONNULL ((1, 2)));
    603 #  endif
    604 _GL_CXXALIAS_SYS (fnmatch, int,
    605                   (const char *pattern, const char *name, int flags));
    606 # endif
    607 # if !GNULIB_FNMATCH_GNU && __GLIBC__ >= 2
    608 _GL_CXXALIASWARN (fnmatch);
    609 # endif
    610 #elif defined GNULIB_POSIXCHECK
    611 # undef fnmatch
    612 # if HAVE_RAW_DECL_FNMATCH
    613 _GL_WARN_ON_USE (fnmatch,
    614                  "fnmatch does not portably work - "
    615                  "use gnulib module fnmatch for portability or gnulib module fnmatch-gnu for a glibc compatible implementation");
    616 # endif
    617 #endif
    618 
    619 
    620 #endif /* _GL_FNMATCH_H */
    621 #endif /* _GL_FNMATCH_H */
    622