1/* This file is automatically generated.  DO NOT EDIT! */
2/* Generated from: NetBSD: mknative-gdb,v 1.15 2020/12/05 21:27:31 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 GNU-like <stdlib.h>.
7
8   Copyright (C) 1995, 2001-2004, 2006-2020 Free Software Foundation, Inc.
9
10   This program is free software: you can redistribute it and/or modify
11   it under the terms of the GNU General Public License as published by
12   the Free Software Foundation; either version 3 of the License, or
13   (at your option) any later version.
14
15   This program is distributed in the hope that it will be useful,
16   but WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   GNU General Public License for more details.
19
20   You should have received a copy of the GNU General Public License
21   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
22
23#if __GNUC__ >= 3
24#pragma GCC system_header
25#endif
26
27
28#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc
29/* Special invocation conventions inside some gnulib header files,
30   and inside some glibc header files, respectively.  */
31
32#include_next <stdlib.h>
33
34#else
35/* Normal invocation convention.  */
36
37#ifndef _GL_STDLIB_H
38
39/* The include_next requires a split double-inclusion guard.  */
40#include_next <stdlib.h>
41
42#ifndef _GL_STDLIB_H
43#define _GL_STDLIB_H
44
45/* NetBSD 5.0 mis-defines NULL.  */
46#include <stddef.h>
47
48/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>.  */
49#if 0 && !defined WEXITSTATUS
50# include <sys/wait.h>
51#endif
52
53/* Solaris declares getloadavg() in <sys/loadavg.h>.  */
54#if (0 || defined GNULIB_POSIXCHECK) && 0
55/* OpenIndiana has a bug: <sys/time.h> must be included before
56   <sys/loadavg.h>.  */
57# include <sys/time.h>
58# include <sys/loadavg.h>
59#endif
60
61/* Native Windows platforms declare mktemp() in <io.h>.  */
62#if 0 && (defined _WIN32 && ! defined __CYGWIN__)
63# include <io.h>
64#endif
65
66#if 0
67
68/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
69   from <stdlib.h> if _REENTRANT is defined.  Include it whenever we need
70   'struct random_data'.  */
71# if 1
72#  include <random.h>
73# endif
74
75# if !1 || 0 || !1
76#  include <stdint.h>
77# endif
78
79# if !1
80/* Define 'struct random_data'.
81   But allow multiple gnulib generated <stdlib.h> replacements to coexist.  */
82#  if !GNULIB_defined_struct_random_data
83struct random_data
84{
85  int32_t *fptr;                /* Front pointer.  */
86  int32_t *rptr;                /* Rear pointer.  */
87  int32_t *state;               /* Array of state values.  */
88  int rand_type;                /* Type of random number generator.  */
89  int rand_deg;                 /* Degree of random number generator.  */
90  int rand_sep;                 /* Distance between front and rear.  */
91  int32_t *end_ptr;             /* Pointer behind state table.  */
92};
93#   define GNULIB_defined_struct_random_data 1
94#  endif
95# endif
96#endif
97
98#if (0 || 0 || 1 || 0 || 0 || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !(defined _WIN32 && ! defined __CYGWIN__)
99/* On Mac OS X 10.3, only <unistd.h> declares mkstemp.  */
100/* On Mac OS X 10.5, only <unistd.h> declares mkstemps.  */
101/* On Mac OS X 10.13, only <unistd.h> declares mkostemp and mkostemps.  */
102/* On Cygwin 1.7.1, only <unistd.h> declares getsubopt.  */
103/* But avoid namespace pollution on glibc systems and native Windows.  */
104# include <unistd.h>
105#endif
106
107/* The __attribute__ feature is available in gcc versions 2.5 and later.
108   The attribute __pure__ was added in gcc 2.96.  */
109#ifndef _GL_ATTRIBUTE_PURE
110# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
111#  define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
112# else
113#  define _GL_ATTRIBUTE_PURE /* empty */
114# endif
115#endif
116
117/* The definition of _Noreturn is copied here.  */
118/* A C macro for declaring that a function does not return.
119   Copyright (C) 2011-2020 Free Software Foundation, Inc.
120
121   This program is free software: you can redistribute it and/or modify it
122   under the terms of the GNU General Public License as published
123   by the Free Software Foundation; either version 3 of the License, or
124   (at your option) any later version.
125
126   This program is distributed in the hope that it will be useful,
127   but WITHOUT ANY WARRANTY; without even the implied warranty of
128   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
129   General Public License for more details.
130
131   You should have received a copy of the GNU General Public License
132   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
133
134#ifndef _Noreturn
135# if (defined __cplusplus \
136      && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
137          || (defined _MSC_VER && 1900 <= _MSC_VER)) \
138      && 0)
139    /* [[noreturn]] is not practically usable, because with it the syntax
140         extern _Noreturn void func (...);
141       would not be valid; such a declaration would only be valid with 'extern'
142       and '_Noreturn' swapped, or without the 'extern' keyword.  However, some
143       AIX system header files and several gnulib header files use precisely
144       this syntax with 'extern'.  */
145#  define _Noreturn [[noreturn]]
146# elif ((!defined __cplusplus || defined __clang__)                     \
147        && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0)  \
148            || 4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
149            || (defined __apple_build_version__ \
150                ? 6000000 <= __apple_build_version__ \
151                : 3 < __clang_major__ + (5 <= __clang_minor__))))
152   /* _Noreturn works as-is.  */
153# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
154#  define _Noreturn __attribute__ ((__noreturn__))
155# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
156#  define _Noreturn __declspec (noreturn)
157# else
158#  define _Noreturn
159# endif
160#endif
161
162/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
163/* C++ compatible function declaration macros.
164   Copyright (C) 2010-2020 Free Software Foundation, Inc.
165
166   This program is free software: you can redistribute it and/or modify it
167   under the terms of the GNU General Public License as published
168   by the Free Software Foundation; either version 3 of the License, or
169   (at your option) any later version.
170
171   This program is distributed in the hope that it will be useful,
172   but WITHOUT ANY WARRANTY; without even the implied warranty of
173   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
174   General Public License for more details.
175
176   You should have received a copy of the GNU General Public License
177   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
178
179#ifndef _GL_CXXDEFS_H
180#define _GL_CXXDEFS_H
181
182/* Begin/end the GNULIB_NAMESPACE namespace.  */
183#if defined __cplusplus && defined GNULIB_NAMESPACE
184# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
185# define _GL_END_NAMESPACE }
186#else
187# define _GL_BEGIN_NAMESPACE
188# define _GL_END_NAMESPACE
189#endif
190
191/* The three most frequent use cases of these macros are:
192
193   * For providing a substitute for a function that is missing on some
194     platforms, but is declared and works fine on the platforms on which
195     it exists:
196
197       #if @GNULIB_FOO@
198       # if !@HAVE_FOO@
199       _GL_FUNCDECL_SYS (foo, ...);
200       # endif
201       _GL_CXXALIAS_SYS (foo, ...);
202       _GL_CXXALIASWARN (foo);
203       #elif defined GNULIB_POSIXCHECK
204       ...
205       #endif
206
207   * For providing a replacement for a function that exists on all platforms,
208     but is broken/insufficient and needs to be replaced on some platforms:
209
210       #if @GNULIB_FOO@
211       # if @REPLACE_FOO@
212       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
213       #   undef foo
214       #   define foo rpl_foo
215       #  endif
216       _GL_FUNCDECL_RPL (foo, ...);
217       _GL_CXXALIAS_RPL (foo, ...);
218       # else
219       _GL_CXXALIAS_SYS (foo, ...);
220       # endif
221       _GL_CXXALIASWARN (foo);
222       #elif defined GNULIB_POSIXCHECK
223       ...
224       #endif
225
226   * For providing a replacement for a function that exists on some platforms
227     but is broken/insufficient and needs to be replaced on some of them and
228     is additionally either missing or undeclared on some other platforms:
229
230       #if @GNULIB_FOO@
231       # if @REPLACE_FOO@
232       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
233       #   undef foo
234       #   define foo rpl_foo
235       #  endif
236       _GL_FUNCDECL_RPL (foo, ...);
237       _GL_CXXALIAS_RPL (foo, ...);
238       # else
239       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
240       _GL_FUNCDECL_SYS (foo, ...);
241       #  endif
242       _GL_CXXALIAS_SYS (foo, ...);
243       # endif
244       _GL_CXXALIASWARN (foo);
245       #elif defined GNULIB_POSIXCHECK
246       ...
247       #endif
248*/
249
250/* _GL_EXTERN_C declaration;
251   performs the declaration with C linkage.  */
252#if defined __cplusplus
253# define _GL_EXTERN_C extern "C"
254#else
255# define _GL_EXTERN_C extern
256#endif
257
258/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
259   declares a replacement function, named rpl_func, with the given prototype,
260   consisting of return type, parameters, and attributes.
261   Example:
262     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
263                                  _GL_ARG_NONNULL ((1)));
264 */
265#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
266  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
267#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
268  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
269
270/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
271   declares the system function, named func, with the given prototype,
272   consisting of return type, parameters, and attributes.
273   Example:
274     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
275                                  _GL_ARG_NONNULL ((1)));
276 */
277#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
278  _GL_EXTERN_C rettype func parameters_and_attributes
279
280/* _GL_CXXALIAS_RPL (func, rettype, parameters);
281   declares a C++ alias called GNULIB_NAMESPACE::func
282   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
283   Example:
284     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
285
286   Wrapping rpl_func in an object with an inline conversion operator
287   avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
288   actually used in the program.  */
289#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
290  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
291#if defined __cplusplus && defined GNULIB_NAMESPACE
292# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
293    namespace GNULIB_NAMESPACE                                \
294    {                                                         \
295      static const struct _gl_ ## func ## _wrapper            \
296      {                                                       \
297        typedef rettype (*type) parameters;                   \
298                                                              \
299        inline operator type () const                         \
300        {                                                     \
301          return ::rpl_func;                                  \
302        }                                                     \
303      } func = {};                                            \
304    }                                                         \
305    _GL_EXTERN_C int _gl_cxxalias_dummy
306#else
307# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
308    _GL_EXTERN_C int _gl_cxxalias_dummy
309#endif
310
311/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
312   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
313   except that the C function rpl_func may have a slightly different
314   declaration.  A cast is used to silence the "invalid conversion" error
315   that would otherwise occur.  */
316#if defined __cplusplus && defined GNULIB_NAMESPACE
317# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
318    namespace GNULIB_NAMESPACE                                     \
319    {                                                              \
320      static const struct _gl_ ## func ## _wrapper                 \
321      {                                                            \
322        typedef rettype (*type) parameters;                        \
323                                                                   \
324        inline operator type () const                              \
325        {                                                          \
326          return reinterpret_cast<type>(::rpl_func);               \
327        }                                                          \
328      } func = {};                                                 \
329    }                                                              \
330    _GL_EXTERN_C int _gl_cxxalias_dummy
331#else
332# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
333    _GL_EXTERN_C int _gl_cxxalias_dummy
334#endif
335
336/* _GL_CXXALIAS_SYS (func, rettype, parameters);
337   declares a C++ alias called GNULIB_NAMESPACE::func
338   that redirects to the system provided function func, if GNULIB_NAMESPACE
339   is defined.
340   Example:
341     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
342
343   Wrapping func in an object with an inline conversion operator
344   avoids a reference to func unless GNULIB_NAMESPACE::func is
345   actually used in the program.  */
346#if defined __cplusplus && defined GNULIB_NAMESPACE
347# define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
348    namespace GNULIB_NAMESPACE                                \
349    {                                                         \
350      static const struct _gl_ ## func ## _wrapper            \
351      {                                                       \
352        typedef rettype (*type) parameters;                   \
353                                                              \
354        inline operator type () const                         \
355        {                                                     \
356          return ::func;                                      \
357        }                                                     \
358      } func = {};                                            \
359    }                                                         \
360    _GL_EXTERN_C int _gl_cxxalias_dummy
361#else
362# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
363    _GL_EXTERN_C int _gl_cxxalias_dummy
364#endif
365
366/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
367   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
368   except that the C function func may have a slightly different declaration.
369   A cast is used to silence the "invalid conversion" error that would
370   otherwise occur.  */
371#if defined __cplusplus && defined GNULIB_NAMESPACE
372# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
373    namespace GNULIB_NAMESPACE                          \
374    {                                                   \
375      static const struct _gl_ ## func ## _wrapper      \
376      {                                                 \
377        typedef rettype (*type) parameters;             \
378                                                        \
379        inline operator type () const                   \
380        {                                               \
381          return reinterpret_cast<type>(::func);        \
382        }                                               \
383      } func = {};                                      \
384    }                                                   \
385    _GL_EXTERN_C int _gl_cxxalias_dummy
386#else
387# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
388    _GL_EXTERN_C int _gl_cxxalias_dummy
389#endif
390
391/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
392   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
393   except that the C function is picked among a set of overloaded functions,
394   namely the one with rettype2 and parameters2.  Two consecutive casts
395   are used to silence the "cannot find a match" and "invalid conversion"
396   errors that would otherwise occur.  */
397#if defined __cplusplus && defined GNULIB_NAMESPACE
398  /* The outer cast must be a reinterpret_cast.
399     The inner cast: When the function is defined as a set of overloaded
400     functions, it works as a static_cast<>, choosing the designated variant.
401     When the function is defined as a single variant, it works as a
402     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
403# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
404    namespace GNULIB_NAMESPACE                                                \
405    {                                                                         \
406      static const struct _gl_ ## func ## _wrapper                            \
407      {                                                                       \
408        typedef rettype (*type) parameters;                                   \
409                                                                              \
410        inline operator type () const                                         \
411        {                                                                     \
412          return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
413        }                                                                     \
414      } func = {};                                                            \
415    }                                                                         \
416    _GL_EXTERN_C int _gl_cxxalias_dummy
417#else
418# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
419    _GL_EXTERN_C int _gl_cxxalias_dummy
420#endif
421
422/* _GL_CXXALIASWARN (func);
423   causes a warning to be emitted when ::func is used but not when
424   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
425   variants.  */
426#if defined __cplusplus && defined GNULIB_NAMESPACE
427# define _GL_CXXALIASWARN(func) \
428   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
429# define _GL_CXXALIASWARN_1(func,namespace) \
430   _GL_CXXALIASWARN_2 (func, namespace)
431/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
432   we enable the warning only when not optimizing.  */
433# if !__OPTIMIZE__
434#  define _GL_CXXALIASWARN_2(func,namespace) \
435    _GL_WARN_ON_USE (func, \
436                     "The symbol ::" #func " refers to the system function. " \
437                     "Use " #namespace "::" #func " instead.")
438# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
439#  define _GL_CXXALIASWARN_2(func,namespace) \
440     extern __typeof__ (func) func
441# else
442#  define _GL_CXXALIASWARN_2(func,namespace) \
443     _GL_EXTERN_C int _gl_cxxalias_dummy
444# endif
445#else
446# define _GL_CXXALIASWARN(func) \
447    _GL_EXTERN_C int _gl_cxxalias_dummy
448#endif
449
450/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
451   causes a warning to be emitted when the given overloaded variant of ::func
452   is used but not when GNULIB_NAMESPACE::func is used.  */
453#if defined __cplusplus && defined GNULIB_NAMESPACE
454# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
455   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
456                        GNULIB_NAMESPACE)
457# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
458   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
459/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
460   we enable the warning only when not optimizing.  */
461# if !__OPTIMIZE__
462#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
463    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
464                         "The symbol ::" #func " refers to the system function. " \
465                         "Use " #namespace "::" #func " instead.")
466# else
467#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
468     _GL_EXTERN_C int _gl_cxxalias_dummy
469# endif
470#else
471# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
472    _GL_EXTERN_C int _gl_cxxalias_dummy
473#endif
474
475#endif /* _GL_CXXDEFS_H */
476
477/* The definition of _GL_ARG_NONNULL is copied here.  */
478/* A C macro for declaring that specific arguments must not be NULL.
479   Copyright (C) 2009-2020 Free Software Foundation, Inc.
480
481   This program is free software: you can redistribute it and/or modify it
482   under the terms of the GNU General Public License as published
483   by the Free Software Foundation; either version 3 of the License, or
484   (at your option) any later version.
485
486   This program is distributed in the hope that it will be useful,
487   but WITHOUT ANY WARRANTY; without even the implied warranty of
488   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
489   General Public License for more details.
490
491   You should have received a copy of the GNU General Public License
492   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
493
494/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
495   that the values passed as arguments n, ..., m must be non-NULL pointers.
496   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
497#ifndef _GL_ARG_NONNULL
498# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
499#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
500# else
501#  define _GL_ARG_NONNULL(params)
502# endif
503#endif
504
505/* The definition of _GL_WARN_ON_USE is copied here.  */
506/* A C macro for emitting warnings if a function is used.
507   Copyright (C) 2010-2020 Free Software Foundation, Inc.
508
509   This program is free software: you can redistribute it and/or modify it
510   under the terms of the GNU General Public License as published
511   by the Free Software Foundation; either version 3 of the License, or
512   (at your option) any later version.
513
514   This program is distributed in the hope that it will be useful,
515   but WITHOUT ANY WARRANTY; without even the implied warranty of
516   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
517   General Public License for more details.
518
519   You should have received a copy of the GNU General Public License
520   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
521
522/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
523   for FUNCTION which will then trigger a compiler warning containing
524   the text of "literal string" anywhere that function is called, if
525   supported by the compiler.  If the compiler does not support this
526   feature, the macro expands to an unused extern declaration.
527
528   _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
529   attribute used in _GL_WARN_ON_USE.  If the compiler does not support
530   this feature, it expands to empty.
531
532   These macros are useful for marking a function as a potential
533   portability trap, with the intent that "literal string" include
534   instructions on the replacement function that should be used
535   instead.
536   _GL_WARN_ON_USE is for functions with 'extern' linkage.
537   _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
538   linkage.
539
540   However, one of the reasons that a function is a portability trap is
541   if it has the wrong signature.  Declaring FUNCTION with a different
542   signature in C is a compilation error, so this macro must use the
543   same type as any existing declaration so that programs that avoid
544   the problematic FUNCTION do not fail to compile merely because they
545   included a header that poisoned the function.  But this implies that
546   _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
547   have a declaration.  Use of this macro implies that there must not
548   be any other macro hiding the declaration of FUNCTION; but
549   undefining FUNCTION first is part of the poisoning process anyway
550   (although for symbols that are provided only via a macro, the result
551   is a compilation error rather than a warning containing
552   "literal string").  Also note that in C++, it is only safe to use if
553   FUNCTION has no overloads.
554
555   For an example, it is possible to poison 'getline' by:
556   - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
557     [getline]) in configure.ac, which potentially defines
558     HAVE_RAW_DECL_GETLINE
559   - adding this code to a header that wraps the system <stdio.h>:
560     #undef getline
561     #if HAVE_RAW_DECL_GETLINE
562     _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
563       "not universally present; use the gnulib module getline");
564     #endif
565
566   It is not possible to directly poison global variables.  But it is
567   possible to write a wrapper accessor function, and poison that
568   (less common usage, like &environ, will cause a compilation error
569   rather than issue the nice warning, but the end result of informing
570   the developer about their portability problem is still achieved):
571     #if HAVE_RAW_DECL_ENVIRON
572     static char ***
573     rpl_environ (void) { return &environ; }
574     _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
575     # undef environ
576     # define environ (*rpl_environ ())
577     #endif
578   or better (avoiding contradictory use of 'static' and 'extern'):
579     #if HAVE_RAW_DECL_ENVIRON
580     static char ***
581     _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
582     rpl_environ (void) { return &environ; }
583     # undef environ
584     # define environ (*rpl_environ ())
585     #endif
586   */
587#ifndef _GL_WARN_ON_USE
588
589# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
590/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
591#  define _GL_WARN_ON_USE(function, message) \
592extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
593#  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
594  __attribute__ ((__warning__ (message)))
595# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
596/* Verify the existence of the function.  */
597#  define _GL_WARN_ON_USE(function, message) \
598extern __typeof__ (function) function
599#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
600# else /* Unsupported.  */
601#  define _GL_WARN_ON_USE(function, message) \
602_GL_WARN_EXTERN_C int _gl_warn_on_use
603#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
604# endif
605#endif
606
607/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
608   is like _GL_WARN_ON_USE (function, "string"), except that in C++ mode the
609   function is declared with the given prototype, consisting of return type,
610   parameters, and attributes.
611   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
612   not work in this case.  */
613#ifndef _GL_WARN_ON_USE_CXX
614# if !defined __cplusplus
615#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
616     _GL_WARN_ON_USE (function, msg)
617# else
618#  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
619#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
620extern rettype function parameters_and_attributes \
621     __attribute__ ((__warning__ (msg)))
622#  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
623/* Verify the existence of the function.  */
624#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
625extern rettype function parameters_and_attributes
626#  else /* Unsupported.  */
627#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
628_GL_WARN_EXTERN_C int _gl_warn_on_use
629#  endif
630# endif
631#endif
632
633/* _GL_WARN_EXTERN_C declaration;
634   performs the declaration with C linkage.  */
635#ifndef _GL_WARN_EXTERN_C
636# if defined __cplusplus
637#  define _GL_WARN_EXTERN_C extern "C"
638# else
639#  define _GL_WARN_EXTERN_C extern
640# endif
641#endif
642
643
644/* Some systems do not define EXIT_*, despite otherwise supporting C89.  */
645#ifndef EXIT_SUCCESS
646# define EXIT_SUCCESS 0
647#endif
648/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
649   with proper operation of xargs.  */
650#ifndef EXIT_FAILURE
651# define EXIT_FAILURE 1
652#elif EXIT_FAILURE != 1
653# undef EXIT_FAILURE
654# define EXIT_FAILURE 1
655#endif
656
657
658#if 0
659/* Terminate the current process with the given return code, without running
660   the 'atexit' handlers.  */
661# if !1
662_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
663# endif
664_GL_CXXALIAS_SYS (_Exit, void, (int status));
665_GL_CXXALIASWARN (_Exit);
666#elif defined GNULIB_POSIXCHECK
667# undef _Exit
668# if HAVE_RAW_DECL__EXIT
669_GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
670                 "use gnulib module _Exit for portability");
671# endif
672#endif
673
674
675#if 0
676/* Parse a signed decimal integer.
677   Returns the value of the integer.  Errors are not detected.  */
678# if !1
679_GL_FUNCDECL_SYS (atoll, long long, (const char *string)
680                                    _GL_ATTRIBUTE_PURE
681                                    _GL_ARG_NONNULL ((1)));
682# endif
683_GL_CXXALIAS_SYS (atoll, long long, (const char *string));
684_GL_CXXALIASWARN (atoll);
685#elif defined GNULIB_POSIXCHECK
686# undef atoll
687# if HAVE_RAW_DECL_ATOLL
688_GL_WARN_ON_USE (atoll, "atoll is unportable - "
689                 "use gnulib module atoll for portability");
690# endif
691#endif
692
693#if 0
694# if 0
695#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
696#   undef calloc
697#   define calloc rpl_calloc
698#  endif
699_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size));
700_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
701# else
702_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
703# endif
704# if __GLIBC__ >= 2
705_GL_CXXALIASWARN (calloc);
706# endif
707#elif defined GNULIB_POSIXCHECK
708# undef calloc
709/* Assume calloc is always declared.  */
710_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - "
711                 "use gnulib module calloc-posix for portability");
712#endif
713
714#if 1
715# if 0
716#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
717#   define canonicalize_file_name rpl_canonicalize_file_name
718#  endif
719_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name)
720                                                  _GL_ARG_NONNULL ((1)));
721_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
722# else
723#  if !0
724_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
725                                                  _GL_ARG_NONNULL ((1)));
726#  endif
727_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
728# endif
729# ifndef GNULIB_defined_canonicalize_file_name
730#  define GNULIB_defined_canonicalize_file_name \
731     (!0 || 0)
732# endif
733_GL_CXXALIASWARN (canonicalize_file_name);
734#elif defined GNULIB_POSIXCHECK
735# undef canonicalize_file_name
736# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
737_GL_WARN_ON_USE (canonicalize_file_name,
738                 "canonicalize_file_name is unportable - "
739                 "use gnulib module canonicalize-lgpl for portability");
740# endif
741#endif
742
743#if 0
744/* Store max(NELEM,3) load average numbers in LOADAVG[].
745   The three numbers are the load average of the last 1 minute, the last 5
746   minutes, and the last 15 minutes, respectively.
747   LOADAVG is an array of NELEM numbers.  */
748# if !1
749_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
750                                   _GL_ARG_NONNULL ((1)));
751# endif
752_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
753_GL_CXXALIASWARN (getloadavg);
754#elif defined GNULIB_POSIXCHECK
755# undef getloadavg
756# if HAVE_RAW_DECL_GETLOADAVG
757_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
758                 "use gnulib module getloadavg for portability");
759# endif
760#endif
761
762#if 0
763/* Assuming *OPTIONP is a comma separated list of elements of the form
764   "token" or "token=value", getsubopt parses the first of these elements.
765   If the first element refers to a "token" that is member of the given
766   NULL-terminated array of tokens:
767     - It replaces the comma with a NUL byte, updates *OPTIONP to point past
768       the first option and the comma, sets *VALUEP to the value of the
769       element (or NULL if it doesn't contain an "=" sign),
770     - It returns the index of the "token" in the given array of tokens.
771   Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
772   For more details see the POSIX specification.
773   https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */
774# if !1
775_GL_FUNCDECL_SYS (getsubopt, int,
776                  (char **optionp, char *const *tokens, char **valuep)
777                  _GL_ARG_NONNULL ((1, 2, 3)));
778# endif
779_GL_CXXALIAS_SYS (getsubopt, int,
780                  (char **optionp, char *const *tokens, char **valuep));
781_GL_CXXALIASWARN (getsubopt);
782#elif defined GNULIB_POSIXCHECK
783# undef getsubopt
784# if HAVE_RAW_DECL_GETSUBOPT
785_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
786                 "use gnulib module getsubopt for portability");
787# endif
788#endif
789
790#if 0
791/* Change the ownership and access permission of the slave side of the
792   pseudo-terminal whose master side is specified by FD.  */
793# if !1
794_GL_FUNCDECL_SYS (grantpt, int, (int fd));
795# endif
796_GL_CXXALIAS_SYS (grantpt, int, (int fd));
797_GL_CXXALIASWARN (grantpt);
798#elif defined GNULIB_POSIXCHECK
799# undef grantpt
800# if HAVE_RAW_DECL_GRANTPT
801_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
802                 "use gnulib module grantpt for portability");
803# endif
804#endif
805
806/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
807   rely on GNU or POSIX semantics for malloc and realloc (for example,
808   by never specifying a zero size), so it does not need malloc or
809   realloc to be redefined.  */
810#if 1
811# if 0
812#  if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
813        || _GL_USE_STDLIB_ALLOC)
814#   undef malloc
815#   define malloc rpl_malloc
816#  endif
817_GL_FUNCDECL_RPL (malloc, void *, (size_t size));
818_GL_CXXALIAS_RPL (malloc, void *, (size_t size));
819# else
820_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
821# endif
822# if __GLIBC__ >= 2
823_GL_CXXALIASWARN (malloc);
824# endif
825#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
826# undef malloc
827/* Assume malloc is always declared.  */
828_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
829                 "use gnulib module malloc-posix for portability");
830#endif
831
832/* Convert a multibyte character to a wide character.  */
833#if 1
834# if 0
835#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
836#   undef mbtowc
837#   define mbtowc rpl_mbtowc
838#  endif
839_GL_FUNCDECL_RPL (mbtowc, int,
840                  (wchar_t *restrict pwc, const char *restrict s, size_t n));
841_GL_CXXALIAS_RPL (mbtowc, int,
842                  (wchar_t *restrict pwc, const char *restrict s, size_t n));
843# else
844#  if !1
845_GL_FUNCDECL_SYS (mbtowc, int,
846                  (wchar_t *restrict pwc, const char *restrict s, size_t n));
847#  endif
848_GL_CXXALIAS_SYS (mbtowc, int,
849                  (wchar_t *restrict pwc, const char *restrict s, size_t n));
850# endif
851# if __GLIBC__ >= 2
852_GL_CXXALIASWARN (mbtowc);
853# endif
854#elif defined GNULIB_POSIXCHECK
855# undef mbtowc
856# if HAVE_RAW_DECL_MBTOWC
857_GL_WARN_ON_USE (mbtowc, "mbtowc is not portable - "
858                 "use gnulib module mbtowc for portability");
859# endif
860#endif
861
862#if 1
863/* Create a unique temporary directory from TEMPLATE.
864   The last six characters of TEMPLATE must be "XXXXXX";
865   they are replaced with a string that makes the directory name unique.
866   Returns TEMPLATE, or a null pointer if it cannot get a unique name.
867   The directory is created mode 700.  */
868# if !1
869_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1)));
870# endif
871_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/));
872_GL_CXXALIASWARN (mkdtemp);
873#elif defined GNULIB_POSIXCHECK
874# undef mkdtemp
875# if HAVE_RAW_DECL_MKDTEMP
876_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
877                 "use gnulib module mkdtemp for portability");
878# endif
879#endif
880
881#if 1
882/* Create a unique temporary file from TEMPLATE.
883   The last six characters of TEMPLATE must be "XXXXXX";
884   they are replaced with a string that makes the file name unique.
885   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
886   and O_TEXT, O_BINARY (defined in "binary-io.h").
887   The file is then created, with the specified flags, ensuring it didn't exist
888   before.
889   The file is created read-write (mask at least 0600 & ~umask), but it may be
890   world-readable and world-writable (mask 0666 & ~umask), depending on the
891   implementation.
892   Returns the open file descriptor if successful, otherwise -1 and errno
893   set.  */
894# if !1
895_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
896                                 _GL_ARG_NONNULL ((1)));
897# endif
898_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
899_GL_CXXALIASWARN (mkostemp);
900#elif defined GNULIB_POSIXCHECK
901# undef mkostemp
902# if HAVE_RAW_DECL_MKOSTEMP
903_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
904                 "use gnulib module mkostemp for portability");
905# endif
906#endif
907
908#if 0
909/* Create a unique temporary file from TEMPLATE.
910   The last six characters of TEMPLATE before a suffix of length
911   SUFFIXLEN must be "XXXXXX";
912   they are replaced with a string that makes the file name unique.
913   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
914   and O_TEXT, O_BINARY (defined in "binary-io.h").
915   The file is then created, with the specified flags, ensuring it didn't exist
916   before.
917   The file is created read-write (mask at least 0600 & ~umask), but it may be
918   world-readable and world-writable (mask 0666 & ~umask), depending on the
919   implementation.
920   Returns the open file descriptor if successful, otherwise -1 and errno
921   set.  */
922# if !1
923_GL_FUNCDECL_SYS (mkostemps, int,
924                  (char * /*template*/, int /*suffixlen*/, int /*flags*/)
925                  _GL_ARG_NONNULL ((1)));
926# endif
927_GL_CXXALIAS_SYS (mkostemps, int,
928                  (char * /*template*/, int /*suffixlen*/, int /*flags*/));
929_GL_CXXALIASWARN (mkostemps);
930#elif defined GNULIB_POSIXCHECK
931# undef mkostemps
932# if HAVE_RAW_DECL_MKOSTEMPS
933_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
934                 "use gnulib module mkostemps for portability");
935# endif
936#endif
937
938#if 0
939/* Create a unique temporary file from TEMPLATE.
940   The last six characters of TEMPLATE must be "XXXXXX";
941   they are replaced with a string that makes the file name unique.
942   The file is then created, ensuring it didn't exist before.
943   The file is created read-write (mask at least 0600 & ~umask), but it may be
944   world-readable and world-writable (mask 0666 & ~umask), depending on the
945   implementation.
946   Returns the open file descriptor if successful, otherwise -1 and errno
947   set.  */
948# if 0
949#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
950#   define mkstemp rpl_mkstemp
951#  endif
952_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
953_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
954# else
955#  if ! 1
956_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
957#  endif
958_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
959# endif
960_GL_CXXALIASWARN (mkstemp);
961#elif defined GNULIB_POSIXCHECK
962# undef mkstemp
963# if HAVE_RAW_DECL_MKSTEMP
964_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - "
965                 "use gnulib module mkstemp for portability");
966# endif
967#endif
968
969#if 0
970/* Create a unique temporary file from TEMPLATE.
971   The last six characters of TEMPLATE prior to a suffix of length
972   SUFFIXLEN must be "XXXXXX";
973   they are replaced with a string that makes the file name unique.
974   The file is then created, ensuring it didn't exist before.
975   The file is created read-write (mask at least 0600 & ~umask), but it may be
976   world-readable and world-writable (mask 0666 & ~umask), depending on the
977   implementation.
978   Returns the open file descriptor if successful, otherwise -1 and errno
979   set.  */
980# if !1
981_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)
982                                 _GL_ARG_NONNULL ((1)));
983# endif
984_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/));
985_GL_CXXALIASWARN (mkstemps);
986#elif defined GNULIB_POSIXCHECK
987# undef mkstemps
988# if HAVE_RAW_DECL_MKSTEMPS
989_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
990                 "use gnulib module mkstemps for portability");
991# endif
992#endif
993
994#if 0
995/* Return an FD open to the master side of a pseudo-terminal.  Flags should
996   include O_RDWR, and may also include O_NOCTTY.  */
997# if !1
998_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
999# endif
1000_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
1001_GL_CXXALIASWARN (posix_openpt);
1002#elif defined GNULIB_POSIXCHECK
1003# undef posix_openpt
1004# if HAVE_RAW_DECL_POSIX_OPENPT
1005_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
1006                 "use gnulib module posix_openpt for portability");
1007# endif
1008#endif
1009
1010#if 0
1011/* Return the pathname of the pseudo-terminal slave associated with
1012   the master FD is open on, or NULL on errors.  */
1013# if 0
1014#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1015#   undef ptsname
1016#   define ptsname rpl_ptsname
1017#  endif
1018_GL_FUNCDECL_RPL (ptsname, char *, (int fd));
1019_GL_CXXALIAS_RPL (ptsname, char *, (int fd));
1020# else
1021#  if !1
1022_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
1023#  endif
1024_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
1025# endif
1026_GL_CXXALIASWARN (ptsname);
1027#elif defined GNULIB_POSIXCHECK
1028# undef ptsname
1029# if HAVE_RAW_DECL_PTSNAME
1030_GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
1031                 "use gnulib module ptsname for portability");
1032# endif
1033#endif
1034
1035#if 0
1036/* Set the pathname of the pseudo-terminal slave associated with
1037   the master FD is open on and return 0, or set errno and return
1038   non-zero on errors.  */
1039# if 0
1040#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1041#   undef ptsname_r
1042#   define ptsname_r rpl_ptsname_r
1043#  endif
1044_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
1045_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
1046# else
1047#  if !1
1048_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
1049#  endif
1050_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
1051# endif
1052# ifndef GNULIB_defined_ptsname_r
1053#  define GNULIB_defined_ptsname_r (!1 || 0)
1054# endif
1055_GL_CXXALIASWARN (ptsname_r);
1056#elif defined GNULIB_POSIXCHECK
1057# undef ptsname_r
1058# if HAVE_RAW_DECL_PTSNAME_R
1059_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
1060                 "use gnulib module ptsname_r for portability");
1061# endif
1062#endif
1063
1064#if 0
1065# if 0
1066#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1067#   undef putenv
1068#   define putenv rpl_putenv
1069#  endif
1070_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1)));
1071_GL_CXXALIAS_RPL (putenv, int, (char *string));
1072# else
1073_GL_CXXALIAS_SYS (putenv, int, (char *string));
1074# endif
1075_GL_CXXALIASWARN (putenv);
1076#endif
1077
1078#if 0
1079/* Sort an array of NMEMB elements, starting at address BASE, each element
1080   occupying SIZE bytes, in ascending order according to the comparison
1081   function COMPARE.  */
1082# if 0
1083#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1084#   undef qsort_r
1085#   define qsort_r rpl_qsort_r
1086#  endif
1087_GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size,
1088                                  int (*compare) (void const *, void const *,
1089                                                  void *),
1090                                  void *arg) _GL_ARG_NONNULL ((1, 4)));
1091_GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size,
1092                                  int (*compare) (void const *, void const *,
1093                                                  void *),
1094                                  void *arg));
1095# else
1096#  if !1
1097_GL_FUNCDECL_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size,
1098                                  int (*compare) (void const *, void const *,
1099                                                  void *),
1100                                  void *arg) _GL_ARG_NONNULL ((1, 4)));
1101#  endif
1102_GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size,
1103                                  int (*compare) (void const *, void const *,
1104                                                  void *),
1105                                  void *arg));
1106# endif
1107_GL_CXXALIASWARN (qsort_r);
1108#elif defined GNULIB_POSIXCHECK
1109# undef qsort_r
1110# if HAVE_RAW_DECL_QSORT_R
1111_GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - "
1112                 "use gnulib module qsort_r for portability");
1113# endif
1114#endif
1115
1116
1117#if 0
1118# if !1
1119#  ifndef RAND_MAX
1120#   define RAND_MAX 2147483647
1121#  endif
1122# endif
1123#endif
1124
1125
1126#if 0
1127# if 0
1128#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1129#   undef random
1130#   define random rpl_random
1131#  endif
1132_GL_FUNCDECL_RPL (random, long, (void));
1133_GL_CXXALIAS_RPL (random, long, (void));
1134# else
1135#  if !1
1136_GL_FUNCDECL_SYS (random, long, (void));
1137#  endif
1138/* Need to cast, because on Haiku, the return type is
1139                               int.  */
1140_GL_CXXALIAS_SYS_CAST (random, long, (void));
1141# endif
1142_GL_CXXALIASWARN (random);
1143#elif defined GNULIB_POSIXCHECK
1144# undef random
1145# if HAVE_RAW_DECL_RANDOM
1146_GL_WARN_ON_USE (random, "random is unportable - "
1147                 "use gnulib module random for portability");
1148# endif
1149#endif
1150
1151#if 0
1152# if 0
1153#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1154#   undef srandom
1155#   define srandom rpl_srandom
1156#  endif
1157_GL_FUNCDECL_RPL (srandom, void, (unsigned int seed));
1158_GL_CXXALIAS_RPL (srandom, void, (unsigned int seed));
1159# else
1160#  if !1
1161_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed));
1162#  endif
1163/* Need to cast, because on FreeBSD, the first parameter is
1164                                       unsigned long seed.  */
1165_GL_CXXALIAS_SYS_CAST (srandom, void, (unsigned int seed));
1166# endif
1167_GL_CXXALIASWARN (srandom);
1168#elif defined GNULIB_POSIXCHECK
1169# undef srandom
1170# if HAVE_RAW_DECL_SRANDOM
1171_GL_WARN_ON_USE (srandom, "srandom is unportable - "
1172                 "use gnulib module random for portability");
1173# endif
1174#endif
1175
1176#if 0
1177# if 0
1178#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1179#   undef initstate
1180#   define initstate rpl_initstate
1181#  endif
1182_GL_FUNCDECL_RPL (initstate, char *,
1183                  (unsigned int seed, char *buf, size_t buf_size)
1184                  _GL_ARG_NONNULL ((2)));
1185_GL_CXXALIAS_RPL (initstate, char *,
1186                  (unsigned int seed, char *buf, size_t buf_size));
1187# else
1188#  if !1 || !1
1189_GL_FUNCDECL_SYS (initstate, char *,
1190                  (unsigned int seed, char *buf, size_t buf_size)
1191                  _GL_ARG_NONNULL ((2)));
1192#  endif
1193/* Need to cast, because on FreeBSD, the first parameter is
1194                        unsigned long seed.  */
1195_GL_CXXALIAS_SYS_CAST (initstate, char *,
1196                       (unsigned int seed, char *buf, size_t buf_size));
1197# endif
1198_GL_CXXALIASWARN (initstate);
1199#elif defined GNULIB_POSIXCHECK
1200# undef initstate
1201# if HAVE_RAW_DECL_INITSTATE
1202_GL_WARN_ON_USE (initstate, "initstate is unportable - "
1203                 "use gnulib module random for portability");
1204# endif
1205#endif
1206
1207#if 0
1208# if 0
1209#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1210#   undef setstate
1211#   define setstate rpl_setstate
1212#  endif
1213_GL_FUNCDECL_RPL (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
1214_GL_CXXALIAS_RPL (setstate, char *, (char *arg_state));
1215# else
1216#  if !1 || !1
1217_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
1218#  endif
1219/* Need to cast, because on Mac OS X 10.13, HP-UX, Solaris the first parameter
1220   is                                     const char *arg_state.  */
1221_GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state));
1222# endif
1223_GL_CXXALIASWARN (setstate);
1224#elif defined GNULIB_POSIXCHECK
1225# undef setstate
1226# if HAVE_RAW_DECL_SETSTATE
1227_GL_WARN_ON_USE (setstate, "setstate is unportable - "
1228                 "use gnulib module random for portability");
1229# endif
1230#endif
1231
1232
1233#if 0
1234# if 0
1235#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1236#   undef random_r
1237#   define random_r rpl_random_r
1238#  endif
1239_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result)
1240                                 _GL_ARG_NONNULL ((1, 2)));
1241_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result));
1242# else
1243#  if !1
1244_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
1245                                 _GL_ARG_NONNULL ((1, 2)));
1246#  endif
1247_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result));
1248# endif
1249_GL_CXXALIASWARN (random_r);
1250#elif defined GNULIB_POSIXCHECK
1251# undef random_r
1252# if HAVE_RAW_DECL_RANDOM_R
1253_GL_WARN_ON_USE (random_r, "random_r is unportable - "
1254                 "use gnulib module random_r for portability");
1255# endif
1256#endif
1257
1258#if 0
1259# if 0
1260#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1261#   undef srandom_r
1262#   define srandom_r rpl_srandom_r
1263#  endif
1264_GL_FUNCDECL_RPL (srandom_r, int,
1265                  (unsigned int seed, struct random_data *rand_state)
1266                  _GL_ARG_NONNULL ((2)));
1267_GL_CXXALIAS_RPL (srandom_r, int,
1268                  (unsigned int seed, struct random_data *rand_state));
1269# else
1270#  if !1
1271_GL_FUNCDECL_SYS (srandom_r, int,
1272                  (unsigned int seed, struct random_data *rand_state)
1273                  _GL_ARG_NONNULL ((2)));
1274#  endif
1275_GL_CXXALIAS_SYS (srandom_r, int,
1276                  (unsigned int seed, struct random_data *rand_state));
1277# endif
1278_GL_CXXALIASWARN (srandom_r);
1279#elif defined GNULIB_POSIXCHECK
1280# undef srandom_r
1281# if HAVE_RAW_DECL_SRANDOM_R
1282_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
1283                 "use gnulib module random_r for portability");
1284# endif
1285#endif
1286
1287#if 0
1288# if 0
1289#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1290#   undef initstate_r
1291#   define initstate_r rpl_initstate_r
1292#  endif
1293_GL_FUNCDECL_RPL (initstate_r, int,
1294                  (unsigned int seed, char *buf, size_t buf_size,
1295                   struct random_data *rand_state)
1296                  _GL_ARG_NONNULL ((2, 4)));
1297_GL_CXXALIAS_RPL (initstate_r, int,
1298                  (unsigned int seed, char *buf, size_t buf_size,
1299                   struct random_data *rand_state));
1300# else
1301#  if !1
1302_GL_FUNCDECL_SYS (initstate_r, int,
1303                  (unsigned int seed, char *buf, size_t buf_size,
1304                   struct random_data *rand_state)
1305                  _GL_ARG_NONNULL ((2, 4)));
1306#  endif
1307/* Need to cast, because on Haiku, the third parameter is
1308                                                     unsigned long buf_size.  */
1309_GL_CXXALIAS_SYS_CAST (initstate_r, int,
1310                       (unsigned int seed, char *buf, size_t buf_size,
1311                        struct random_data *rand_state));
1312# endif
1313_GL_CXXALIASWARN (initstate_r);
1314#elif defined GNULIB_POSIXCHECK
1315# undef initstate_r
1316# if HAVE_RAW_DECL_INITSTATE_R
1317_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
1318                 "use gnulib module random_r for portability");
1319# endif
1320#endif
1321
1322#if 0
1323# if 0
1324#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1325#   undef setstate_r
1326#   define setstate_r rpl_setstate_r
1327#  endif
1328_GL_FUNCDECL_RPL (setstate_r, int,
1329                  (char *arg_state, struct random_data *rand_state)
1330                  _GL_ARG_NONNULL ((1, 2)));
1331_GL_CXXALIAS_RPL (setstate_r, int,
1332                  (char *arg_state, struct random_data *rand_state));
1333# else
1334#  if !1
1335_GL_FUNCDECL_SYS (setstate_r, int,
1336                  (char *arg_state, struct random_data *rand_state)
1337                  _GL_ARG_NONNULL ((1, 2)));
1338#  endif
1339/* Need to cast, because on Haiku, the first parameter is
1340                        void *arg_state.  */
1341_GL_CXXALIAS_SYS_CAST (setstate_r, int,
1342                       (char *arg_state, struct random_data *rand_state));
1343# endif
1344_GL_CXXALIASWARN (setstate_r);
1345#elif defined GNULIB_POSIXCHECK
1346# undef setstate_r
1347# if HAVE_RAW_DECL_SETSTATE_R
1348_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
1349                 "use gnulib module random_r for portability");
1350# endif
1351#endif
1352
1353
1354#if 1
1355# if 0
1356#  if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
1357        || _GL_USE_STDLIB_ALLOC)
1358#   undef realloc
1359#   define realloc rpl_realloc
1360#  endif
1361_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
1362_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
1363# else
1364_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
1365# endif
1366# if __GLIBC__ >= 2
1367_GL_CXXALIASWARN (realloc);
1368# endif
1369#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
1370# undef realloc
1371/* Assume realloc is always declared.  */
1372_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
1373                 "use gnulib module realloc-posix for portability");
1374#endif
1375
1376
1377#if 0
1378# if ! 1
1379_GL_FUNCDECL_SYS (reallocarray, void *,
1380                  (void *ptr, size_t nmemb, size_t size));
1381# endif
1382_GL_CXXALIAS_SYS (reallocarray, void *,
1383                  (void *ptr, size_t nmemb, size_t size));
1384_GL_CXXALIASWARN (reallocarray);
1385#elif defined GNULIB_POSIXCHECK
1386# undef reallocarray
1387# if HAVE_RAW_DECL_REALLOCARRAY
1388_GL_WARN_ON_USE (reallocarray, "reallocarray is not portable - "
1389                 "use gnulib module reallocarray for portability");
1390# endif
1391#endif
1392
1393#if 1
1394# if 1
1395#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1396#   define realpath rpl_realpath
1397#  endif
1398_GL_FUNCDECL_RPL (realpath, char *,
1399                  (const char *restrict name, char *restrict resolved)
1400                  _GL_ARG_NONNULL ((1)));
1401_GL_CXXALIAS_RPL (realpath, char *,
1402                  (const char *restrict name, char *restrict resolved));
1403# else
1404#  if !1
1405_GL_FUNCDECL_SYS (realpath, char *,
1406                  (const char *restrict name, char *restrict resolved)
1407                  _GL_ARG_NONNULL ((1)));
1408#  endif
1409_GL_CXXALIAS_SYS (realpath, char *,
1410                  (const char *restrict name, char *restrict resolved));
1411# endif
1412_GL_CXXALIASWARN (realpath);
1413#elif defined GNULIB_POSIXCHECK
1414# undef realpath
1415# if HAVE_RAW_DECL_REALPATH
1416_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module "
1417                 "canonicalize or canonicalize-lgpl for portability");
1418# endif
1419#endif
1420
1421#if 0
1422/* Test a user response to a question.
1423   Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear.  */
1424# if !1
1425_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1)));
1426# endif
1427_GL_CXXALIAS_SYS (rpmatch, int, (const char *response));
1428_GL_CXXALIASWARN (rpmatch);
1429#elif defined GNULIB_POSIXCHECK
1430# undef rpmatch
1431# if HAVE_RAW_DECL_RPMATCH
1432_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
1433                 "use gnulib module rpmatch for portability");
1434# endif
1435#endif
1436
1437#if 0
1438/* Look up NAME in the environment, returning 0 in insecure situations.  */
1439# if !1
1440_GL_FUNCDECL_SYS (secure_getenv, char *,
1441                  (char const *name) _GL_ARG_NONNULL ((1)));
1442# endif
1443_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name));
1444_GL_CXXALIASWARN (secure_getenv);
1445#elif defined GNULIB_POSIXCHECK
1446# undef secure_getenv
1447# if HAVE_RAW_DECL_SECURE_GETENV
1448_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - "
1449                 "use gnulib module secure_getenv for portability");
1450# endif
1451#endif
1452
1453#if 1
1454/* Set NAME to VALUE in the environment.
1455   If REPLACE is nonzero, overwrite an existing value.  */
1456# if 0
1457#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1458#   undef setenv
1459#   define setenv rpl_setenv
1460#  endif
1461_GL_FUNCDECL_RPL (setenv, int,
1462                  (const char *name, const char *value, int replace)
1463                  _GL_ARG_NONNULL ((1)));
1464_GL_CXXALIAS_RPL (setenv, int,
1465                  (const char *name, const char *value, int replace));
1466# else
1467#  if !1
1468_GL_FUNCDECL_SYS (setenv, int,
1469                  (const char *name, const char *value, int replace)
1470                  _GL_ARG_NONNULL ((1)));
1471#  endif
1472_GL_CXXALIAS_SYS (setenv, int,
1473                  (const char *name, const char *value, int replace));
1474# endif
1475# if !(0 && !1)
1476_GL_CXXALIASWARN (setenv);
1477# endif
1478#elif defined GNULIB_POSIXCHECK
1479# undef setenv
1480# if HAVE_RAW_DECL_SETENV
1481_GL_WARN_ON_USE (setenv, "setenv is unportable - "
1482                 "use gnulib module setenv for portability");
1483# endif
1484#endif
1485
1486#if 0
1487 /* Parse a double from STRING, updating ENDP if appropriate.  */
1488# if 0
1489#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1490#   define strtod rpl_strtod
1491#  endif
1492#  define GNULIB_defined_strtod_function 1
1493_GL_FUNCDECL_RPL (strtod, double,
1494                  (const char *restrict str, char **restrict endp)
1495                  _GL_ARG_NONNULL ((1)));
1496_GL_CXXALIAS_RPL (strtod, double,
1497                  (const char *restrict str, char **restrict endp));
1498# else
1499#  if !1
1500_GL_FUNCDECL_SYS (strtod, double,
1501                  (const char *restrict str, char **restrict endp)
1502                  _GL_ARG_NONNULL ((1)));
1503#  endif
1504_GL_CXXALIAS_SYS (strtod, double,
1505                  (const char *restrict str, char **restrict endp));
1506# endif
1507# if __GLIBC__ >= 2
1508_GL_CXXALIASWARN (strtod);
1509# endif
1510#elif defined GNULIB_POSIXCHECK
1511# undef strtod
1512# if HAVE_RAW_DECL_STRTOD
1513_GL_WARN_ON_USE (strtod, "strtod is unportable - "
1514                 "use gnulib module strtod for portability");
1515# endif
1516#endif
1517
1518#if 0
1519 /* Parse a 'long double' from STRING, updating ENDP if appropriate.  */
1520# if 0
1521#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1522#   define strtold rpl_strtold
1523#  endif
1524#  define GNULIB_defined_strtold_function 1
1525_GL_FUNCDECL_RPL (strtold, long double,
1526                  (const char *restrict str, char **restrict endp)
1527                  _GL_ARG_NONNULL ((1)));
1528_GL_CXXALIAS_RPL (strtold, long double,
1529                  (const char *restrict str, char **restrict endp));
1530# else
1531#  if !1
1532_GL_FUNCDECL_SYS (strtold, long double,
1533                  (const char *restrict str, char **restrict endp)
1534                  _GL_ARG_NONNULL ((1)));
1535#  endif
1536_GL_CXXALIAS_SYS (strtold, long double,
1537                  (const char *restrict str, char **restrict endp));
1538# endif
1539_GL_CXXALIASWARN (strtold);
1540#elif defined GNULIB_POSIXCHECK
1541# undef strtold
1542# if HAVE_RAW_DECL_STRTOLD
1543_GL_WARN_ON_USE (strtold, "strtold is unportable - "
1544                 "use gnulib module strtold for portability");
1545# endif
1546#endif
1547
1548#if 0
1549/* Parse a signed integer whose textual representation starts at STRING.
1550   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
1551   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
1552   "0x").
1553   If ENDPTR is not NULL, the address of the first byte after the integer is
1554   stored in *ENDPTR.
1555   Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
1556   to ERANGE.  */
1557# if !1
1558_GL_FUNCDECL_SYS (strtoll, long long,
1559                  (const char *restrict string, char **restrict endptr,
1560                   int base)
1561                  _GL_ARG_NONNULL ((1)));
1562# endif
1563_GL_CXXALIAS_SYS (strtoll, long long,
1564                  (const char *restrict string, char **restrict endptr,
1565                   int base));
1566_GL_CXXALIASWARN (strtoll);
1567#elif defined GNULIB_POSIXCHECK
1568# undef strtoll
1569# if HAVE_RAW_DECL_STRTOLL
1570_GL_WARN_ON_USE (strtoll, "strtoll is unportable - "
1571                 "use gnulib module strtoll for portability");
1572# endif
1573#endif
1574
1575#if 0
1576/* Parse an unsigned integer whose textual representation starts at STRING.
1577   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
1578   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
1579   "0x").
1580   If ENDPTR is not NULL, the address of the first byte after the integer is
1581   stored in *ENDPTR.
1582   Upon overflow, the return value is ULLONG_MAX, and errno is set to
1583   ERANGE.  */
1584# if !1
1585_GL_FUNCDECL_SYS (strtoull, unsigned long long,
1586                  (const char *restrict string, char **restrict endptr,
1587                   int base)
1588                  _GL_ARG_NONNULL ((1)));
1589# endif
1590_GL_CXXALIAS_SYS (strtoull, unsigned long long,
1591                  (const char *restrict string, char **restrict endptr,
1592                   int base));
1593_GL_CXXALIASWARN (strtoull);
1594#elif defined GNULIB_POSIXCHECK
1595# undef strtoull
1596# if HAVE_RAW_DECL_STRTOULL
1597_GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
1598                 "use gnulib module strtoull for portability");
1599# endif
1600#endif
1601
1602#if 0
1603/* Unlock the slave side of the pseudo-terminal whose master side is specified
1604   by FD, so that it can be opened.  */
1605# if !1
1606_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
1607# endif
1608_GL_CXXALIAS_SYS (unlockpt, int, (int fd));
1609_GL_CXXALIASWARN (unlockpt);
1610#elif defined GNULIB_POSIXCHECK
1611# undef unlockpt
1612# if HAVE_RAW_DECL_UNLOCKPT
1613_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
1614                 "use gnulib module unlockpt for portability");
1615# endif
1616#endif
1617
1618#if 1
1619/* Remove the variable NAME from the environment.  */
1620# if 0
1621#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1622#   undef unsetenv
1623#   define unsetenv rpl_unsetenv
1624#  endif
1625_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
1626_GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
1627# else
1628#  if !1
1629_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
1630#  endif
1631_GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
1632# endif
1633# if !(0 && !1)
1634_GL_CXXALIASWARN (unsetenv);
1635# endif
1636#elif defined GNULIB_POSIXCHECK
1637# undef unsetenv
1638# if HAVE_RAW_DECL_UNSETENV
1639_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
1640                 "use gnulib module unsetenv for portability");
1641# endif
1642#endif
1643
1644/* Convert a wide character to a multibyte character.  */
1645#if 0
1646# if 0
1647#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1648#   undef wctomb
1649#   define wctomb rpl_wctomb
1650#  endif
1651_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
1652_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
1653# else
1654_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
1655# endif
1656# if __GLIBC__ >= 2
1657_GL_CXXALIASWARN (wctomb);
1658# endif
1659#endif
1660
1661
1662#endif /* _GL_STDLIB_H */
1663#endif /* _GL_STDLIB_H */
1664#endif
1665