1 /* This file is automatically generated.  DO NOT EDIT! */
2 /* Generated from: NetBSD: mknative-gdb,v 1.12 2020/09/17 16:54: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 /* Substitute for and wrapper around <unistd.h>.
7    Copyright (C) 2003-2020 Free Software Foundation, Inc.
8 
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3, or (at your option)
12    any later version.
13 
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18 
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
21 
22 #ifndef _GL_UNISTD_H
23 
24 #if __GNUC__ >= 3
25 #pragma GCC system_header
26 #endif
27 
28 
29 #if 1 && defined _GL_INCLUDING_UNISTD_H
30 /* Special invocation convention:
31    - On Mac OS X 10.3.9 we have a sequence of nested includes
32      <unistd.h> -> <signal.h> -> <pthread.h> -> <unistd.h>
33      In this situation, the functions are not yet declared, therefore we cannot
34      provide the C++ aliases.  */
35 
36 #include_next <unistd.h>
37 
38 #else
39 /* Normal invocation convention.  */
40 
41 /* The include_next requires a split double-inclusion guard.  */
42 #if 1
43 # define _GL_INCLUDING_UNISTD_H
44 # include_next <unistd.h>
45 # undef _GL_INCLUDING_UNISTD_H
46 #endif
47 
48 /* Get all possible declarations of gethostname().  */
49 #if 0 && 0 \
50   && !defined _GL_INCLUDING_WINSOCK2_H
51 # define _GL_INCLUDING_WINSOCK2_H
52 # include <winsock2.h>
53 # undef _GL_INCLUDING_WINSOCK2_H
54 #endif
55 
56 #if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
57 #define _GL_UNISTD_H
58 
59 /* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
60 /* But avoid namespace pollution on glibc systems.  */
61 #ifndef __GLIBC__
62 # include <stddef.h>
63 #endif
64 
65 /* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
66 /* MSVC declares 'unlink' in <stdio.h>, not in <unistd.h>.  We must include
67    it before we  #define unlink rpl_unlink.  */
68 /* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>.  */
69 /* But avoid namespace pollution on glibc systems.  */
70 #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
71      || ((0 || defined GNULIB_POSIXCHECK) \
72          && (defined _WIN32 && ! defined __CYGWIN__)) \
73      || ((0 || defined GNULIB_POSIXCHECK) \
74          && defined __CYGWIN__)) \
75     && ! defined __GLIBC__
76 # include <stdio.h>
77 #endif
78 
79 /* Cygwin 1.7.1 and Android 4.3 declare unlinkat in <fcntl.h>, not in
80    <unistd.h>.  */
81 /* But avoid namespace pollution on glibc systems.  */
82 #if (0 || defined GNULIB_POSIXCHECK) \
83     && (defined __CYGWIN__ || defined __ANDROID__) \
84     && ! defined __GLIBC__
85 # include <fcntl.h>
86 #endif
87 
88 /* mingw fails to declare _exit in <unistd.h>.  */
89 /* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
90    <unistd.h>.  */
91 /* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>.  */
92 /* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
93    included here.  */
94 /* But avoid namespace pollution on glibc systems.  */
95 #if !defined __GLIBC__ && !defined __osf__
96 # define __need_system_stdlib_h
97 # include <stdlib.h>
98 # undef __need_system_stdlib_h
99 #endif
100 
101 /* Native Windows platforms declare chdir, getcwd, rmdir in
102    <io.h> and/or <direct.h>, not in <unistd.h>.
103    They also declare access(), chmod(), close(), dup(), dup2(), isatty(),
104    lseek(), read(), unlink(), write() in <io.h>.  */
105 #if ((1 || 1 || 1 \
106       || defined GNULIB_POSIXCHECK) \
107      && (defined _WIN32 && ! defined __CYGWIN__))
108 # include <io.h>     /* mingw32, mingw64 */
109 # include <direct.h> /* mingw64, MSVC 9 */
110 #elif (1 || 1 || 1 || 0 \
111        || 0 || 0 || 0 || 0 \
112        || defined GNULIB_POSIXCHECK) \
113       && (defined _WIN32 && ! defined __CYGWIN__)
114 # include <io.h>
115 #endif
116 
117 /* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
118    NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>.  */
119 /* But avoid namespace pollution on glibc systems.  */
120 #if ((0 && (defined _AIX || defined __osf__)) \
121      || (0 && defined __TANDEM)) \
122     && !defined __GLIBC__
123 # include <netdb.h>
124 #endif
125 
126 /* Mac OS X 10.13, Solaris 11.4, and Android 9.0 declare getentropy in
127    <sys/random.h>, not in <unistd.h>.  */
128 /* But avoid namespace pollution on glibc systems.  */
129 #if (0 || defined GNULIB_POSIXCHECK) \
130     && ((defined __APPLE__ && defined __MACH__) || defined __sun \
131         || defined __ANDROID__) \
132     && 1 \
133     && !defined __GLIBC__
134 # include <sys/random.h>
135 #endif
136 
137 /* Android 4.3 declares fchownat in <sys/stat.h>, not in <unistd.h>.  */
138 /* But avoid namespace pollution on glibc systems.  */
139 #if (0 || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
140     && !defined __GLIBC__
141 # include <sys/stat.h>
142 #endif
143 
144 /* MSVC defines off_t in <sys/types.h>.
145    May also define off_t to a 64-bit type on native Windows.  */
146 /* But avoid namespace pollution on glibc systems.  */
147 #ifndef __GLIBC__
148 /* Get off_t, ssize_t.  */
149 # include <sys/types.h>
150 #endif
151 
152 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
153 /* C++ compatible function declaration macros.
154    Copyright (C) 2010-2020 Free Software Foundation, Inc.
155 
156    This program is free software: you can redistribute it and/or modify it
157    under the terms of the GNU General Public License as published
158    by the Free Software Foundation; either version 3 of the License, or
159    (at your option) any later version.
160 
161    This program is distributed in the hope that it will be useful,
162    but WITHOUT ANY WARRANTY; without even the implied warranty of
163    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
164    General Public License for more details.
165 
166    You should have received a copy of the GNU General Public License
167    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
168 
169 #ifndef _GL_CXXDEFS_H
170 #define _GL_CXXDEFS_H
171 
172 /* Begin/end the GNULIB_NAMESPACE namespace.  */
173 #if defined __cplusplus && defined GNULIB_NAMESPACE
174 # define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
175 # define _GL_END_NAMESPACE }
176 #else
177 # define _GL_BEGIN_NAMESPACE
178 # define _GL_END_NAMESPACE
179 #endif
180 
181 /* The three most frequent use cases of these macros are:
182 
183    * For providing a substitute for a function that is missing on some
184      platforms, but is declared and works fine on the platforms on which
185      it exists:
186 
187        #if @GNULIB_FOO@
188        # if !@HAVE_FOO@
189        _GL_FUNCDECL_SYS (foo, ...);
190        # endif
191        _GL_CXXALIAS_SYS (foo, ...);
192        _GL_CXXALIASWARN (foo);
193        #elif defined GNULIB_POSIXCHECK
194        ...
195        #endif
196 
197    * For providing a replacement for a function that exists on all platforms,
198      but is broken/insufficient and needs to be replaced on some platforms:
199 
200        #if @GNULIB_FOO@
201        # if @REPLACE_FOO@
202        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
203        #   undef foo
204        #   define foo rpl_foo
205        #  endif
206        _GL_FUNCDECL_RPL (foo, ...);
207        _GL_CXXALIAS_RPL (foo, ...);
208        # else
209        _GL_CXXALIAS_SYS (foo, ...);
210        # endif
211        _GL_CXXALIASWARN (foo);
212        #elif defined GNULIB_POSIXCHECK
213        ...
214        #endif
215 
216    * For providing a replacement for a function that exists on some platforms
217      but is broken/insufficient and needs to be replaced on some of them and
218      is additionally either missing or undeclared on some other platforms:
219 
220        #if @GNULIB_FOO@
221        # if @REPLACE_FOO@
222        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
223        #   undef foo
224        #   define foo rpl_foo
225        #  endif
226        _GL_FUNCDECL_RPL (foo, ...);
227        _GL_CXXALIAS_RPL (foo, ...);
228        # else
229        #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
230        _GL_FUNCDECL_SYS (foo, ...);
231        #  endif
232        _GL_CXXALIAS_SYS (foo, ...);
233        # endif
234        _GL_CXXALIASWARN (foo);
235        #elif defined GNULIB_POSIXCHECK
236        ...
237        #endif
238 */
239 
240 /* _GL_EXTERN_C declaration;
241    performs the declaration with C linkage.  */
242 #if defined __cplusplus
243 # define _GL_EXTERN_C extern "C"
244 #else
245 # define _GL_EXTERN_C extern
246 #endif
247 
248 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
249    declares a replacement function, named rpl_func, with the given prototype,
250    consisting of return type, parameters, and attributes.
251    Example:
252      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
253                                   _GL_ARG_NONNULL ((1)));
254  */
255 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
256   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
257 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
258   _GL_EXTERN_C rettype rpl_func parameters_and_attributes
259 
260 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
261    declares the system function, named func, with the given prototype,
262    consisting of return type, parameters, and attributes.
263    Example:
264      _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
265                                   _GL_ARG_NONNULL ((1)));
266  */
267 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
268   _GL_EXTERN_C rettype func parameters_and_attributes
269 
270 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
271    declares a C++ alias called GNULIB_NAMESPACE::func
272    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
273    Example:
274      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
275 
276    Wrapping rpl_func in an object with an inline conversion operator
277    avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
278    actually used in the program.  */
279 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
280   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
281 #if defined __cplusplus && defined GNULIB_NAMESPACE
282 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
283     namespace GNULIB_NAMESPACE                                \
284     {                                                         \
285       static const struct _gl_ ## func ## _wrapper            \
286       {                                                       \
287         typedef rettype (*type) parameters;                   \
288                                                               \
289         inline operator type () const                         \
290         {                                                     \
291           return ::rpl_func;                                  \
292         }                                                     \
293       } func = {};                                            \
294     }                                                         \
295     _GL_EXTERN_C int _gl_cxxalias_dummy
296 #else
297 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
298     _GL_EXTERN_C int _gl_cxxalias_dummy
299 #endif
300 
301 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
302    is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
303    except that the C function rpl_func may have a slightly different
304    declaration.  A cast is used to silence the "invalid conversion" error
305    that would otherwise occur.  */
306 #if defined __cplusplus && defined GNULIB_NAMESPACE
307 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
308     namespace GNULIB_NAMESPACE                                     \
309     {                                                              \
310       static const struct _gl_ ## func ## _wrapper                 \
311       {                                                            \
312         typedef rettype (*type) parameters;                        \
313                                                                    \
314         inline operator type () const                              \
315         {                                                          \
316           return reinterpret_cast<type>(::rpl_func);               \
317         }                                                          \
318       } func = {};                                                 \
319     }                                                              \
320     _GL_EXTERN_C int _gl_cxxalias_dummy
321 #else
322 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
323     _GL_EXTERN_C int _gl_cxxalias_dummy
324 #endif
325 
326 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
327    declares a C++ alias called GNULIB_NAMESPACE::func
328    that redirects to the system provided function func, if GNULIB_NAMESPACE
329    is defined.
330    Example:
331      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
332 
333    Wrapping func in an object with an inline conversion operator
334    avoids a reference to func unless GNULIB_NAMESPACE::func is
335    actually used in the program.  */
336 #if defined __cplusplus && defined GNULIB_NAMESPACE
337 # define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
338     namespace GNULIB_NAMESPACE                                \
339     {                                                         \
340       static const struct _gl_ ## func ## _wrapper            \
341       {                                                       \
342         typedef rettype (*type) parameters;                   \
343                                                               \
344         inline operator type () const                         \
345         {                                                     \
346           return ::func;                                      \
347         }                                                     \
348       } func = {};                                            \
349     }                                                         \
350     _GL_EXTERN_C int _gl_cxxalias_dummy
351 #else
352 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
353     _GL_EXTERN_C int _gl_cxxalias_dummy
354 #endif
355 
356 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
357    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
358    except that the C function func may have a slightly different declaration.
359    A cast is used to silence the "invalid conversion" error that would
360    otherwise occur.  */
361 #if defined __cplusplus && defined GNULIB_NAMESPACE
362 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
363     namespace GNULIB_NAMESPACE                          \
364     {                                                   \
365       static const struct _gl_ ## func ## _wrapper      \
366       {                                                 \
367         typedef rettype (*type) parameters;             \
368                                                         \
369         inline operator type () const                   \
370         {                                               \
371           return reinterpret_cast<type>(::func);        \
372         }                                               \
373       } func = {};                                      \
374     }                                                   \
375     _GL_EXTERN_C int _gl_cxxalias_dummy
376 #else
377 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
378     _GL_EXTERN_C int _gl_cxxalias_dummy
379 #endif
380 
381 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
382    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
383    except that the C function is picked among a set of overloaded functions,
384    namely the one with rettype2 and parameters2.  Two consecutive casts
385    are used to silence the "cannot find a match" and "invalid conversion"
386    errors that would otherwise occur.  */
387 #if defined __cplusplus && defined GNULIB_NAMESPACE
388   /* The outer cast must be a reinterpret_cast.
389      The inner cast: When the function is defined as a set of overloaded
390      functions, it works as a static_cast<>, choosing the designated variant.
391      When the function is defined as a single variant, it works as a
392      reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
393 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
394     namespace GNULIB_NAMESPACE                                                \
395     {                                                                         \
396       static const struct _gl_ ## func ## _wrapper                            \
397       {                                                                       \
398         typedef rettype (*type) parameters;                                   \
399                                                                               \
400         inline operator type () const                                         \
401         {                                                                     \
402           return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
403         }                                                                     \
404       } func = {};                                                            \
405     }                                                                         \
406     _GL_EXTERN_C int _gl_cxxalias_dummy
407 #else
408 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
409     _GL_EXTERN_C int _gl_cxxalias_dummy
410 #endif
411 
412 /* _GL_CXXALIASWARN (func);
413    causes a warning to be emitted when ::func is used but not when
414    GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
415    variants.  */
416 #if defined __cplusplus && defined GNULIB_NAMESPACE
417 # define _GL_CXXALIASWARN(func) \
418    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
419 # define _GL_CXXALIASWARN_1(func,namespace) \
420    _GL_CXXALIASWARN_2 (func, namespace)
421 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
422    we enable the warning only when not optimizing.  */
423 # if !__OPTIMIZE__
424 #  define _GL_CXXALIASWARN_2(func,namespace) \
425     _GL_WARN_ON_USE (func, \
426                      "The symbol ::" #func " refers to the system function. " \
427                      "Use " #namespace "::" #func " instead.")
428 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
429 #  define _GL_CXXALIASWARN_2(func,namespace) \
430      extern __typeof__ (func) func
431 # else
432 #  define _GL_CXXALIASWARN_2(func,namespace) \
433      _GL_EXTERN_C int _gl_cxxalias_dummy
434 # endif
435 #else
436 # define _GL_CXXALIASWARN(func) \
437     _GL_EXTERN_C int _gl_cxxalias_dummy
438 #endif
439 
440 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
441    causes a warning to be emitted when the given overloaded variant of ::func
442    is used but not when GNULIB_NAMESPACE::func is used.  */
443 #if defined __cplusplus && defined GNULIB_NAMESPACE
444 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
445    _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
446                         GNULIB_NAMESPACE)
447 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
448    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
449 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
450    we enable the warning only when not optimizing.  */
451 # if !__OPTIMIZE__
452 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
453     _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
454                          "The symbol ::" #func " refers to the system function. " \
455                          "Use " #namespace "::" #func " instead.")
456 # else
457 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
458      _GL_EXTERN_C int _gl_cxxalias_dummy
459 # endif
460 #else
461 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
462     _GL_EXTERN_C int _gl_cxxalias_dummy
463 #endif
464 
465 #endif /* _GL_CXXDEFS_H */
466 
467 /* The definition of _GL_ARG_NONNULL is copied here.  */
468 /* A C macro for declaring that specific arguments must not be NULL.
469    Copyright (C) 2009-2020 Free Software Foundation, Inc.
470 
471    This program is free software: you can redistribute it and/or modify it
472    under the terms of the GNU General Public License as published
473    by the Free Software Foundation; either version 3 of the License, or
474    (at your option) any later version.
475 
476    This program is distributed in the hope that it will be useful,
477    but WITHOUT ANY WARRANTY; without even the implied warranty of
478    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
479    General Public License for more details.
480 
481    You should have received a copy of the GNU General Public License
482    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
483 
484 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
485    that the values passed as arguments n, ..., m must be non-NULL pointers.
486    n = 1 stands for the first argument, n = 2 for the second argument etc.  */
487 #ifndef _GL_ARG_NONNULL
488 # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
489 #  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
490 # else
491 #  define _GL_ARG_NONNULL(params)
492 # endif
493 #endif
494 
495 /* The definition of _GL_WARN_ON_USE is copied here.  */
496 /* A C macro for emitting warnings if a function is used.
497    Copyright (C) 2010-2020 Free Software Foundation, Inc.
498 
499    This program is free software: you can redistribute it and/or modify it
500    under the terms of the GNU General Public License as published
501    by the Free Software Foundation; either version 3 of the License, or
502    (at your option) any later version.
503 
504    This program is distributed in the hope that it will be useful,
505    but WITHOUT ANY WARRANTY; without even the implied warranty of
506    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
507    General Public License for more details.
508 
509    You should have received a copy of the GNU General Public License
510    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
511 
512 /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
513    for FUNCTION which will then trigger a compiler warning containing
514    the text of "literal string" anywhere that function is called, if
515    supported by the compiler.  If the compiler does not support this
516    feature, the macro expands to an unused extern declaration.
517 
518    _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
519    attribute used in _GL_WARN_ON_USE.  If the compiler does not support
520    this feature, it expands to empty.
521 
522    These macros are useful for marking a function as a potential
523    portability trap, with the intent that "literal string" include
524    instructions on the replacement function that should be used
525    instead.
526    _GL_WARN_ON_USE is for functions with 'extern' linkage.
527    _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
528    linkage.
529 
530    However, one of the reasons that a function is a portability trap is
531    if it has the wrong signature.  Declaring FUNCTION with a different
532    signature in C is a compilation error, so this macro must use the
533    same type as any existing declaration so that programs that avoid
534    the problematic FUNCTION do not fail to compile merely because they
535    included a header that poisoned the function.  But this implies that
536    _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
537    have a declaration.  Use of this macro implies that there must not
538    be any other macro hiding the declaration of FUNCTION; but
539    undefining FUNCTION first is part of the poisoning process anyway
540    (although for symbols that are provided only via a macro, the result
541    is a compilation error rather than a warning containing
542    "literal string").  Also note that in C++, it is only safe to use if
543    FUNCTION has no overloads.
544 
545    For an example, it is possible to poison 'getline' by:
546    - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
547      [getline]) in configure.ac, which potentially defines
548      HAVE_RAW_DECL_GETLINE
549    - adding this code to a header that wraps the system <stdio.h>:
550      #undef getline
551      #if HAVE_RAW_DECL_GETLINE
552      _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
553        "not universally present; use the gnulib module getline");
554      #endif
555 
556    It is not possible to directly poison global variables.  But it is
557    possible to write a wrapper accessor function, and poison that
558    (less common usage, like &environ, will cause a compilation error
559    rather than issue the nice warning, but the end result of informing
560    the developer about their portability problem is still achieved):
561      #if HAVE_RAW_DECL_ENVIRON
562      static char ***
563      rpl_environ (void) { return &environ; }
564      _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
565      # undef environ
566      # define environ (*rpl_environ ())
567      #endif
568    or better (avoiding contradictory use of 'static' and 'extern'):
569      #if HAVE_RAW_DECL_ENVIRON
570      static char ***
571      _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
572      rpl_environ (void) { return &environ; }
573      # undef environ
574      # define environ (*rpl_environ ())
575      #endif
576    */
577 #ifndef _GL_WARN_ON_USE
578 
579 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
580 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
581 #  define _GL_WARN_ON_USE(function, message) \
582 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
583 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
584   __attribute__ ((__warning__ (message)))
585 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
586 /* Verify the existence of the function.  */
587 #  define _GL_WARN_ON_USE(function, message) \
588 extern __typeof__ (function) function
589 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
590 # else /* Unsupported.  */
591 #  define _GL_WARN_ON_USE(function, message) \
592 _GL_WARN_EXTERN_C int _gl_warn_on_use
593 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
594 # endif
595 #endif
596 
597 /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
598    is like _GL_WARN_ON_USE (function, "string"), except that in C++ mode the
599    function is declared with the given prototype, consisting of return type,
600    parameters, and attributes.
601    This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
602    not work in this case.  */
603 #ifndef _GL_WARN_ON_USE_CXX
604 # if !defined __cplusplus
605 #  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
606      _GL_WARN_ON_USE (function, msg)
607 # else
608 #  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
609 #   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
610 extern rettype function parameters_and_attributes \
611      __attribute__ ((__warning__ (msg)))
612 #  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
613 /* Verify the existence of the function.  */
614 #   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
615 extern rettype function parameters_and_attributes
616 #  else /* Unsupported.  */
617 #   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
618 _GL_WARN_EXTERN_C int _gl_warn_on_use
619 #  endif
620 # endif
621 #endif
622 
623 /* _GL_WARN_EXTERN_C declaration;
624    performs the declaration with C linkage.  */
625 #ifndef _GL_WARN_EXTERN_C
626 # if defined __cplusplus
627 #  define _GL_WARN_EXTERN_C extern "C"
628 # else
629 #  define _GL_WARN_EXTERN_C extern
630 # endif
631 #endif
632 
633 
634 /* Get getopt(), optarg, optind, opterr, optopt.  */
635 #if 0 && 0 && !defined _GL_SYSTEM_GETOPT
636 # include <getopt-cdefs.h>
637 # include <getopt-pfx-core.h>
638 #endif
639 
640 #ifndef _GL_INLINE_HEADER_BEGIN
641  #error "Please include config.h first."
642 #endif
643 _GL_INLINE_HEADER_BEGIN
644 #ifndef _GL_UNISTD_INLINE
645 # define _GL_UNISTD_INLINE _GL_INLINE
646 #endif
647 
648 /* Hide some function declarations from <winsock2.h>.  */
649 
650 #if 0 && 0
651 # if !defined _GL_SYS_SOCKET_H
652 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
653 #   undef socket
654 #   define socket              socket_used_without_including_sys_socket_h
655 #   undef connect
656 #   define connect             connect_used_without_including_sys_socket_h
657 #   undef accept
658 #   define accept              accept_used_without_including_sys_socket_h
659 #   undef bind
660 #   define bind                bind_used_without_including_sys_socket_h
661 #   undef getpeername
662 #   define getpeername         getpeername_used_without_including_sys_socket_h
663 #   undef getsockname
664 #   define getsockname         getsockname_used_without_including_sys_socket_h
665 #   undef getsockopt
666 #   define getsockopt          getsockopt_used_without_including_sys_socket_h
667 #   undef listen
668 #   define listen              listen_used_without_including_sys_socket_h
669 #   undef recv
670 #   define recv                recv_used_without_including_sys_socket_h
671 #   undef send
672 #   define send                send_used_without_including_sys_socket_h
673 #   undef recvfrom
674 #   define recvfrom            recvfrom_used_without_including_sys_socket_h
675 #   undef sendto
676 #   define sendto              sendto_used_without_including_sys_socket_h
677 #   undef setsockopt
678 #   define setsockopt          setsockopt_used_without_including_sys_socket_h
679 #   undef shutdown
680 #   define shutdown            shutdown_used_without_including_sys_socket_h
681 #  else
682     _GL_WARN_ON_USE (socket,
683                      "socket() used without including <sys/socket.h>");
684     _GL_WARN_ON_USE (connect,
685                      "connect() used without including <sys/socket.h>");
686     _GL_WARN_ON_USE (accept,
687                      "accept() used without including <sys/socket.h>");
688     _GL_WARN_ON_USE (bind,
689                      "bind() used without including <sys/socket.h>");
690     _GL_WARN_ON_USE (getpeername,
691                      "getpeername() used without including <sys/socket.h>");
692     _GL_WARN_ON_USE (getsockname,
693                      "getsockname() used without including <sys/socket.h>");
694     _GL_WARN_ON_USE (getsockopt,
695                      "getsockopt() used without including <sys/socket.h>");
696     _GL_WARN_ON_USE (listen,
697                      "listen() used without including <sys/socket.h>");
698     _GL_WARN_ON_USE (recv,
699                      "recv() used without including <sys/socket.h>");
700     _GL_WARN_ON_USE (send,
701                      "send() used without including <sys/socket.h>");
702     _GL_WARN_ON_USE (recvfrom,
703                      "recvfrom() used without including <sys/socket.h>");
704     _GL_WARN_ON_USE (sendto,
705                      "sendto() used without including <sys/socket.h>");
706     _GL_WARN_ON_USE (setsockopt,
707                      "setsockopt() used without including <sys/socket.h>");
708     _GL_WARN_ON_USE (shutdown,
709                      "shutdown() used without including <sys/socket.h>");
710 #  endif
711 # endif
712 # if !defined _GL_SYS_SELECT_H
713 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
714 #   undef select
715 #   define select              select_used_without_including_sys_select_h
716 #  else
717     _GL_WARN_ON_USE (select,
718                      "select() used without including <sys/select.h>");
719 #  endif
720 # endif
721 #endif
722 
723 
724 /* OS/2 EMX lacks these macros.  */
725 #ifndef STDIN_FILENO
726 # define STDIN_FILENO 0
727 #endif
728 #ifndef STDOUT_FILENO
729 # define STDOUT_FILENO 1
730 #endif
731 #ifndef STDERR_FILENO
732 # define STDERR_FILENO 2
733 #endif
734 
735 /* Ensure *_OK macros exist.  */
736 #ifndef F_OK
737 # define F_OK 0
738 # define X_OK 1
739 # define W_OK 2
740 # define R_OK 4
741 #endif
742 
743 
744 /* Declare overridden functions.  */
745 
746 
747 #if 0
748 # if 0
749 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
750 #   undef access
751 #   define access rpl_access
752 #  endif
753 _GL_FUNCDECL_RPL (access, int, (const char *file, int mode)
754                                _GL_ARG_NONNULL ((1)));
755 _GL_CXXALIAS_RPL (access, int, (const char *file, int mode));
756 # else
757 _GL_CXXALIAS_SYS (access, int, (const char *file, int mode));
758 # endif
759 _GL_CXXALIASWARN (access);
760 #elif defined GNULIB_POSIXCHECK
761 # undef access
762 # if HAVE_RAW_DECL_ACCESS
763 /* The access() function is a security risk.  */
764 _GL_WARN_ON_USE (access, "access does not always support X_OK - "
765                  "use gnulib module access for portability; "
766                  "also, this function is a security risk - "
767                  "use the gnulib module faccessat instead");
768 # endif
769 #endif
770 
771 
772 #if 1
773 _GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1)));
774 _GL_CXXALIASWARN (chdir);
775 #elif defined GNULIB_POSIXCHECK
776 # undef chdir
777 # if HAVE_RAW_DECL_CHDIR
778 _GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
779                  "use gnulib module chdir for portability");
780 # endif
781 #endif
782 
783 
784 #if 0
785 /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
786    to GID (if GID is not -1).  Follow symbolic links.
787    Return 0 if successful, otherwise -1 and errno set.
788    See the POSIX:2008 specification
789    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html.  */
790 # if 0
791 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
792 #   undef chown
793 #   define chown rpl_chown
794 #  endif
795 _GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
796                               _GL_ARG_NONNULL ((1)));
797 _GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
798 # else
799 #  if !1
800 _GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
801                               _GL_ARG_NONNULL ((1)));
802 #  endif
803 _GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
804 # endif
805 _GL_CXXALIASWARN (chown);
806 #elif defined GNULIB_POSIXCHECK
807 # undef chown
808 # if HAVE_RAW_DECL_CHOWN
809 _GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
810                  "doesn't treat a uid or gid of -1 on some systems - "
811                  "use gnulib module chown for portability");
812 # endif
813 #endif
814 
815 
816 #if 1
817 # if 0
818 /* Automatically included by modules that need a replacement for close.  */
819 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
820 #   undef close
821 #   define close rpl_close
822 #  endif
823 _GL_FUNCDECL_RPL (close, int, (int fd));
824 _GL_CXXALIAS_RPL (close, int, (int fd));
825 # else
826 _GL_CXXALIAS_SYS (close, int, (int fd));
827 # endif
828 _GL_CXXALIASWARN (close);
829 #elif 0
830 # undef close
831 # define close close_used_without_requesting_gnulib_module_close
832 #elif defined GNULIB_POSIXCHECK
833 # undef close
834 /* Assume close is always declared.  */
835 _GL_WARN_ON_USE (close, "close does not portably work on sockets - "
836                  "use gnulib module close for portability");
837 #endif
838 
839 
840 #if 0
841 # if !1
842 _GL_FUNCDECL_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
843                                              int ofd, off_t *opos,
844                                              size_t len, unsigned flags));
845 _GL_CXXALIAS_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
846                                              int ofd, off_t *opos,
847                                              size_t len, unsigned flags));
848 # endif
849 _GL_CXXALIASWARN (copy_file_range);
850 #elif defined GNULIB_POSIXCHECK
851 /* Assume copy_file_range is always declared.  */
852 _GL_WARN_ON_USE (copy_file_range,
853                  "copy_file_range is unportable - "
854                  "use gnulib module copy_file_range for portability");
855 #endif
856 
857 
858 #if 1
859 # if 0
860 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
861 #   define dup rpl_dup
862 #  endif
863 _GL_FUNCDECL_RPL (dup, int, (int oldfd));
864 _GL_CXXALIAS_RPL (dup, int, (int oldfd));
865 # else
866 _GL_CXXALIAS_SYS (dup, int, (int oldfd));
867 # endif
868 _GL_CXXALIASWARN (dup);
869 #elif defined GNULIB_POSIXCHECK
870 # undef dup
871 # if HAVE_RAW_DECL_DUP
872 _GL_WARN_ON_USE (dup, "dup is unportable - "
873                  "use gnulib module dup for portability");
874 # endif
875 #endif
876 
877 
878 #if 1
879 /* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
880    NEWFD = OLDFD, otherwise close NEWFD first if it is open.
881    Return newfd if successful, otherwise -1 and errno set.
882    See the POSIX:2008 specification
883    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>.  */
884 # if 0
885 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
886 #   define dup2 rpl_dup2
887 #  endif
888 _GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
889 _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
890 # else
891 #  if !1
892 _GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
893 #  endif
894 _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
895 # endif
896 _GL_CXXALIASWARN (dup2);
897 #elif defined GNULIB_POSIXCHECK
898 # undef dup2
899 # if HAVE_RAW_DECL_DUP2
900 _GL_WARN_ON_USE (dup2, "dup2 is unportable - "
901                  "use gnulib module dup2 for portability");
902 # endif
903 #endif
904 
905 
906 #if 0
907 /* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
908    specified flags.
909    The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
910    and O_TEXT, O_BINARY (defined in "binary-io.h").
911    Close NEWFD first if it is open.
912    Return newfd if successful, otherwise -1 and errno set.
913    See the Linux man page at
914    <https://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>.  */
915 # if 1
916 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
917 #   define dup3 rpl_dup3
918 #  endif
919 _GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
920 _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
921 # else
922 _GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
923 _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
924 # endif
925 _GL_CXXALIASWARN (dup3);
926 #elif defined GNULIB_POSIXCHECK
927 # undef dup3
928 # if HAVE_RAW_DECL_DUP3
929 _GL_WARN_ON_USE (dup3, "dup3 is unportable - "
930                  "use gnulib module dup3 for portability");
931 # endif
932 #endif
933 
934 
935 #if 1
936 # if defined __CYGWIN__ && !defined __i386__
937 /* The 'environ' variable is defined in a DLL. Therefore its declaration needs
938    the '__declspec(dllimport)' attribute, but the system's <unistd.h> lacks it.
939    This leads to a link error on 64-bit Cygwin when the option
940    -Wl,--disable-auto-import is in use.  */
941 _GL_EXTERN_C __declspec(dllimport) char **environ;
942 # endif
943 # if !0
944 /* Set of environment variables and values.  An array of strings of the form
945    "VARIABLE=VALUE", terminated with a NULL.  */
946 #  if defined __APPLE__ && defined __MACH__
947 #   include <TargetConditionals.h>
948 #   if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
949 #    define _GL_USE_CRT_EXTERNS
950 #   endif
951 #  endif
952 #  ifdef _GL_USE_CRT_EXTERNS
953 #   include <crt_externs.h>
954 #   define environ (*_NSGetEnviron ())
955 #  else
956 #   ifdef __cplusplus
957 extern "C" {
958 #   endif
959 extern char **environ;
960 #   ifdef __cplusplus
961 }
962 #   endif
963 #  endif
964 # endif
965 #elif defined GNULIB_POSIXCHECK
966 # if HAVE_RAW_DECL_ENVIRON
967 _GL_UNISTD_INLINE char ***
968 _GL_WARN_ON_USE_ATTRIBUTE ("environ is unportable - "
969                            "use gnulib module environ for portability")
rpl_environ(void)970 rpl_environ (void)
971 {
972   return &environ;
973 }
974 #  undef environ
975 #  define environ (*rpl_environ ())
976 # endif
977 #endif
978 
979 
980 #if 0
981 /* Like access(), except that it uses the effective user id and group id of
982    the current process.  */
983 # if !1
984 _GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
985                                    _GL_ARG_NONNULL ((1)));
986 # endif
987 _GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
988 _GL_CXXALIASWARN (euidaccess);
989 # if defined GNULIB_POSIXCHECK
990 /* Like access(), this function is a security risk.  */
991 _GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
992                  "use the gnulib module faccessat instead");
993 # endif
994 #elif defined GNULIB_POSIXCHECK
995 # undef euidaccess
996 # if HAVE_RAW_DECL_EUIDACCESS
997 _GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
998                  "use gnulib module euidaccess for portability");
999 # endif
1000 #endif
1001 
1002 
1003 #if 0
1004 # if 0
1005 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1006 #   undef faccessat
1007 #   define faccessat rpl_faccessat
1008 #  endif
1009 _GL_FUNCDECL_RPL (faccessat, int,
1010                   (int fd, char const *name, int mode, int flag)
1011                   _GL_ARG_NONNULL ((2)));
1012 _GL_CXXALIAS_RPL (faccessat, int,
1013                   (int fd, char const *name, int mode, int flag));
1014 # else
1015 #  if !1
1016 _GL_FUNCDECL_SYS (faccessat, int,
1017                   (int fd, char const *file, int mode, int flag)
1018                   _GL_ARG_NONNULL ((2)));
1019 #  endif
1020 _GL_CXXALIAS_SYS (faccessat, int,
1021                   (int fd, char const *file, int mode, int flag));
1022 # endif
1023 _GL_CXXALIASWARN (faccessat);
1024 #elif defined GNULIB_POSIXCHECK
1025 # undef faccessat
1026 # if HAVE_RAW_DECL_FACCESSAT
1027 _GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
1028                  "use gnulib module faccessat for portability");
1029 # endif
1030 #endif
1031 
1032 
1033 #if 1
1034 /* Change the process' current working directory to the directory on which
1035    the given file descriptor is open.
1036    Return 0 if successful, otherwise -1 and errno set.
1037    See the POSIX:2008 specification
1038    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>.  */
1039 # if ! 1
1040 _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
1041 
1042 /* Gnulib internal hooks needed to maintain the fchdir metadata.  */
1043 _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
1044      _GL_ARG_NONNULL ((2));
1045 _GL_EXTERN_C void _gl_unregister_fd (int fd);
1046 _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
1047 _GL_EXTERN_C const char *_gl_directory_name (int fd);
1048 
1049 # else
1050 #  if !1
1051 _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
1052 #  endif
1053 # endif
1054 _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
1055 _GL_CXXALIASWARN (fchdir);
1056 #elif defined GNULIB_POSIXCHECK
1057 # undef fchdir
1058 # if HAVE_RAW_DECL_FCHDIR
1059 _GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
1060                  "use gnulib module fchdir for portability");
1061 # endif
1062 #endif
1063 
1064 
1065 #if 0
1066 # if 0
1067 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1068 #   undef fchownat
1069 #   define fchownat rpl_fchownat
1070 #  endif
1071 _GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
1072                                   uid_t owner, gid_t group, int flag)
1073                                  _GL_ARG_NONNULL ((2)));
1074 _GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
1075                                   uid_t owner, gid_t group, int flag));
1076 # else
1077 #  if !1
1078 _GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
1079                                   uid_t owner, gid_t group, int flag)
1080                                  _GL_ARG_NONNULL ((2)));
1081 #  endif
1082 _GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
1083                                   uid_t owner, gid_t group, int flag));
1084 # endif
1085 _GL_CXXALIASWARN (fchownat);
1086 #elif defined GNULIB_POSIXCHECK
1087 # undef fchownat
1088 # if HAVE_RAW_DECL_FCHOWNAT
1089 _GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
1090                  "use gnulib module openat for portability");
1091 # endif
1092 #endif
1093 
1094 
1095 #if 0
1096 /* Synchronize changes to a file.
1097    Return 0 if successful, otherwise -1 and errno set.
1098    See POSIX:2008 specification
1099    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>.  */
1100 # if !1 || !1
1101 _GL_FUNCDECL_SYS (fdatasync, int, (int fd));
1102 # endif
1103 _GL_CXXALIAS_SYS (fdatasync, int, (int fd));
1104 _GL_CXXALIASWARN (fdatasync);
1105 #elif defined GNULIB_POSIXCHECK
1106 # undef fdatasync
1107 # if HAVE_RAW_DECL_FDATASYNC
1108 _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
1109                  "use gnulib module fdatasync for portability");
1110 # endif
1111 #endif
1112 
1113 
1114 #if 0
1115 /* Synchronize changes, including metadata, to a file.
1116    Return 0 if successful, otherwise -1 and errno set.
1117    See POSIX:2008 specification
1118    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>.  */
1119 # if !1
1120 _GL_FUNCDECL_SYS (fsync, int, (int fd));
1121 # endif
1122 _GL_CXXALIAS_SYS (fsync, int, (int fd));
1123 _GL_CXXALIASWARN (fsync);
1124 #elif defined GNULIB_POSIXCHECK
1125 # undef fsync
1126 # if HAVE_RAW_DECL_FSYNC
1127 _GL_WARN_ON_USE (fsync, "fsync is unportable - "
1128                  "use gnulib module fsync for portability");
1129 # endif
1130 #endif
1131 
1132 
1133 #if 0
1134 /* Change the size of the file to which FD is opened to become equal to LENGTH.
1135    Return 0 if successful, otherwise -1 and errno set.
1136    See the POSIX:2008 specification
1137    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>.  */
1138 # if 0
1139 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1140 #   undef ftruncate
1141 #   define ftruncate rpl_ftruncate
1142 #  endif
1143 _GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length));
1144 _GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length));
1145 # else
1146 #  if !1
1147 _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
1148 #  endif
1149 _GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
1150 # endif
1151 _GL_CXXALIASWARN (ftruncate);
1152 #elif defined GNULIB_POSIXCHECK
1153 # undef ftruncate
1154 # if HAVE_RAW_DECL_FTRUNCATE
1155 _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
1156                  "use gnulib module ftruncate for portability");
1157 # endif
1158 #endif
1159 
1160 
1161 #if 1
1162 /* Get the name of the current working directory, and put it in SIZE bytes
1163    of BUF.
1164    Return BUF if successful, or NULL if the directory couldn't be determined
1165    or SIZE was too small.
1166    See the POSIX:2008 specification
1167    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
1168    Additionally, the gnulib module 'getcwd' guarantees the following GNU
1169    extension: If BUF is NULL, an array is allocated with 'malloc'; the array
1170    is SIZE bytes long, unless SIZE == 0, in which case it is as big as
1171    necessary.  */
1172 # if 1
1173 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1174 #   define getcwd rpl_getcwd
1175 #  endif
1176 _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
1177 _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
1178 # else
1179 /* Need to cast, because on mingw, the second parameter is
1180                                                    int size.  */
1181 _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
1182 # endif
1183 _GL_CXXALIASWARN (getcwd);
1184 #elif defined GNULIB_POSIXCHECK
1185 # undef getcwd
1186 # if HAVE_RAW_DECL_GETCWD
1187 _GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
1188                  "use gnulib module getcwd for portability");
1189 # endif
1190 #endif
1191 
1192 
1193 #if 0
1194 /* Return the NIS domain name of the machine.
1195    WARNING! The NIS domain name is unrelated to the fully qualified host name
1196             of the machine.  It is also unrelated to email addresses.
1197    WARNING! The NIS domain name is usually the empty string or "(none)" when
1198             not using NIS.
1199 
1200    Put up to LEN bytes of the NIS domain name into NAME.
1201    Null terminate it if the name is shorter than LEN.
1202    If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
1203    Return 0 if successful, otherwise set errno and return -1.  */
1204 # if 0
1205 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1206 #   undef getdomainname
1207 #   define getdomainname rpl_getdomainname
1208 #  endif
1209 _GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
1210                                       _GL_ARG_NONNULL ((1)));
1211 _GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
1212 # else
1213 #  if !1
1214 _GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
1215                                       _GL_ARG_NONNULL ((1)));
1216 #  endif
1217 _GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
1218 # endif
1219 _GL_CXXALIASWARN (getdomainname);
1220 #elif defined GNULIB_POSIXCHECK
1221 # undef getdomainname
1222 # if HAVE_RAW_DECL_GETDOMAINNAME
1223 _GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
1224                  "use gnulib module getdomainname for portability");
1225 # endif
1226 #endif
1227 
1228 
1229 #if 1
1230 /* Return the maximum number of file descriptors in the current process.
1231    In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
1232 # if 0
1233 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1234 #   undef getdtablesize
1235 #   define getdtablesize rpl_getdtablesize
1236 #  endif
1237 _GL_FUNCDECL_RPL (getdtablesize, int, (void));
1238 _GL_CXXALIAS_RPL (getdtablesize, int, (void));
1239 # else
1240 #  if !1
1241 _GL_FUNCDECL_SYS (getdtablesize, int, (void));
1242 #  endif
1243 /* Need to cast, because on AIX, the parameter list is
1244                                            (...).  */
1245 _GL_CXXALIAS_SYS_CAST (getdtablesize, int, (void));
1246 # endif
1247 _GL_CXXALIASWARN (getdtablesize);
1248 #elif defined GNULIB_POSIXCHECK
1249 # undef getdtablesize
1250 # if HAVE_RAW_DECL_GETDTABLESIZE
1251 _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
1252                  "use gnulib module getdtablesize for portability");
1253 # endif
1254 #endif
1255 
1256 
1257 #if 0
1258 /* Fill a buffer with random bytes.  */
1259 # if !1
1260 _GL_FUNCDECL_SYS (getentropy, int, (void *buffer, size_t length));
1261 # endif
1262 _GL_CXXALIAS_SYS (getentropy, int, (void *buffer, size_t length));
1263 _GL_CXXALIASWARN (getentropy);
1264 #elif defined GNULIB_POSIXCHECK
1265 # undef getentropy
1266 # if HAVE_RAW_DECL_GETENTROPY
1267 _GL_WARN_ON_USE (getentropy, "getentropy is unportable - "
1268                  "use gnulib module getentropy for portability");
1269 # endif
1270 #endif
1271 
1272 
1273 #if 0
1274 /* Return the supplemental groups that the current process belongs to.
1275    It is unspecified whether the effective group id is in the list.
1276    If N is 0, return the group count; otherwise, N describes how many
1277    entries are available in GROUPS.  Return -1 and set errno if N is
1278    not 0 and not large enough.  Fails with ENOSYS on some systems.  */
1279 # if 0
1280 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1281 #   undef getgroups
1282 #   define getgroups rpl_getgroups
1283 #  endif
1284 _GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
1285 _GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
1286 # else
1287 #  if !1
1288 _GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
1289 #  endif
1290 _GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
1291 # endif
1292 _GL_CXXALIASWARN (getgroups);
1293 #elif defined GNULIB_POSIXCHECK
1294 # undef getgroups
1295 # if HAVE_RAW_DECL_GETGROUPS
1296 _GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
1297                  "use gnulib module getgroups for portability");
1298 # endif
1299 #endif
1300 
1301 
1302 #if 0
1303 /* Return the standard host name of the machine.
1304    WARNING! The host name may or may not be fully qualified.
1305 
1306    Put up to LEN bytes of the host name into NAME.
1307    Null terminate it if the name is shorter than LEN.
1308    If the host name is longer than LEN, set errno = EINVAL and return -1.
1309    Return 0 if successful, otherwise set errno and return -1.  */
1310 # if 0
1311 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1312 #   undef gethostname
1313 #   define gethostname rpl_gethostname
1314 #  endif
1315 _GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
1316                                     _GL_ARG_NONNULL ((1)));
1317 _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
1318 # else
1319 #  if !1
1320 _GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
1321                                     _GL_ARG_NONNULL ((1)));
1322 #  endif
1323 /* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
1324    parameter is
1325                                                       int len.  */
1326 _GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
1327 # endif
1328 _GL_CXXALIASWARN (gethostname);
1329 #elif 0
1330 # undef gethostname
1331 # define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
1332 #elif defined GNULIB_POSIXCHECK
1333 # undef gethostname
1334 # if HAVE_RAW_DECL_GETHOSTNAME
1335 _GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
1336                  "use gnulib module gethostname for portability");
1337 # endif
1338 #endif
1339 
1340 
1341 #if 0
1342 /* Returns the user's login name, or NULL if it cannot be found.  Upon error,
1343    returns NULL with errno set.
1344 
1345    See <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
1346 
1347    Most programs don't need to use this function, because the information is
1348    available through environment variables:
1349      ${LOGNAME-$USER}        on Unix platforms,
1350      $USERNAME               on native Windows platforms.
1351  */
1352 # if !1
1353 _GL_FUNCDECL_SYS (getlogin, char *, (void));
1354 # endif
1355 _GL_CXXALIAS_SYS (getlogin, char *, (void));
1356 _GL_CXXALIASWARN (getlogin);
1357 #elif defined GNULIB_POSIXCHECK
1358 # undef getlogin
1359 # if HAVE_RAW_DECL_GETLOGIN
1360 _GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
1361                  "use gnulib module getlogin for portability");
1362 # endif
1363 #endif
1364 
1365 
1366 #if 1
1367 /* Copies the user's login name to NAME.
1368    The array pointed to by NAME has room for SIZE bytes.
1369 
1370    Returns 0 if successful.  Upon error, an error number is returned, or -1 in
1371    the case that the login name cannot be found but no specific error is
1372    provided (this case is hopefully rare but is left open by the POSIX spec).
1373 
1374    See <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
1375 
1376    Most programs don't need to use this function, because the information is
1377    available through environment variables:
1378      ${LOGNAME-$USER}        on Unix platforms,
1379      $USERNAME               on native Windows platforms.
1380  */
1381 # if 0
1382 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1383 #   define getlogin_r rpl_getlogin_r
1384 #  endif
1385 _GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
1386                                    _GL_ARG_NONNULL ((1)));
1387 _GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
1388 # else
1389 #  if !1
1390 _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
1391                                    _GL_ARG_NONNULL ((1)));
1392 #  endif
1393 /* Need to cast, because on Solaris 10 systems, the second argument is
1394                                                      int size.  */
1395 _GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
1396 # endif
1397 _GL_CXXALIASWARN (getlogin_r);
1398 #elif defined GNULIB_POSIXCHECK
1399 # undef getlogin_r
1400 # if HAVE_RAW_DECL_GETLOGIN_R
1401 _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
1402                  "use gnulib module getlogin_r for portability");
1403 # endif
1404 #endif
1405 
1406 
1407 #if 0
1408 # if 0
1409 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1410 #   define getpagesize rpl_getpagesize
1411 #  endif
1412 _GL_FUNCDECL_RPL (getpagesize, int, (void));
1413 _GL_CXXALIAS_RPL (getpagesize, int, (void));
1414 # else
1415 /* On HP-UX, getpagesize exists, but it is not declared in <unistd.h> even if
1416    the compiler options -D_HPUX_SOURCE -D_XOPEN_SOURCE=600 are used.  */
1417 #  if defined __hpux
1418 _GL_FUNCDECL_SYS (getpagesize, int, (void));
1419 #  endif
1420 #  if !1
1421 #   if !defined getpagesize
1422 /* This is for POSIX systems.  */
1423 #    if !defined _gl_getpagesize && defined _SC_PAGESIZE
1424 #     if ! (defined __VMS && __VMS_VER < 70000000)
1425 #      define _gl_getpagesize() sysconf (_SC_PAGESIZE)
1426 #     endif
1427 #    endif
1428 /* This is for older VMS.  */
1429 #    if !defined _gl_getpagesize && defined __VMS
1430 #     ifdef __ALPHA
1431 #      define _gl_getpagesize() 8192
1432 #     else
1433 #      define _gl_getpagesize() 512
1434 #     endif
1435 #    endif
1436 /* This is for BeOS.  */
1437 #    if !defined _gl_getpagesize && 0
1438 #     include <OS.h>
1439 #     if defined B_PAGE_SIZE
1440 #      define _gl_getpagesize() B_PAGE_SIZE
1441 #     endif
1442 #    endif
1443 /* This is for AmigaOS4.0.  */
1444 #    if !defined _gl_getpagesize && defined __amigaos4__
1445 #     define _gl_getpagesize() 2048
1446 #    endif
1447 /* This is for older Unix systems.  */
1448 #    if !defined _gl_getpagesize && 0
1449 #     include <sys/param.h>
1450 #     ifdef EXEC_PAGESIZE
1451 #      define _gl_getpagesize() EXEC_PAGESIZE
1452 #     else
1453 #      ifdef NBPG
1454 #       ifndef CLSIZE
1455 #        define CLSIZE 1
1456 #       endif
1457 #       define _gl_getpagesize() (NBPG * CLSIZE)
1458 #      else
1459 #       ifdef NBPC
1460 #        define _gl_getpagesize() NBPC
1461 #       endif
1462 #      endif
1463 #     endif
1464 #    endif
1465 #    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1466 #     define getpagesize() _gl_getpagesize ()
1467 #    else
1468 #     if !GNULIB_defined_getpagesize_function
1469 _GL_UNISTD_INLINE int
1470 getpagesize ()
1471 {
1472   return _gl_getpagesize ();
1473 }
1474 #      define GNULIB_defined_getpagesize_function 1
1475 #     endif
1476 #    endif
1477 #   endif
1478 #  endif
1479 /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  */
1480 _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
1481 # endif
1482 # if 1
1483 _GL_CXXALIASWARN (getpagesize);
1484 # endif
1485 #elif defined GNULIB_POSIXCHECK
1486 # undef getpagesize
1487 # if HAVE_RAW_DECL_GETPAGESIZE
1488 _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
1489                  "use gnulib module getpagesize for portability");
1490 # endif
1491 #endif
1492 
1493 
1494 #if 0
1495 /* Function getpass() from module 'getpass':
1496      Read a password from /dev/tty or stdin.
1497    Function getpass() from module 'getpass-gnu':
1498      Read a password of arbitrary length from /dev/tty or stdin.  */
1499 # if 0
1500 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1501 #   undef getpass
1502 #   define getpass rpl_getpass
1503 #  endif
1504 _GL_FUNCDECL_RPL (getpass, char *, (const char *prompt)
1505                                    _GL_ARG_NONNULL ((1)));
1506 _GL_CXXALIAS_RPL (getpass, char *, (const char *prompt));
1507 # else
1508 #  if !1
1509 _GL_FUNCDECL_SYS (getpass, char *, (const char *prompt)
1510                                    _GL_ARG_NONNULL ((1)));
1511 #  endif
1512 _GL_CXXALIAS_SYS (getpass, char *, (const char *prompt));
1513 # endif
1514 _GL_CXXALIASWARN (getpass);
1515 #elif defined GNULIB_POSIXCHECK
1516 # undef getpass
1517 # if HAVE_RAW_DECL_GETPASS
1518 _GL_WARN_ON_USE (getpass, "getpass is unportable - "
1519                  "use gnulib module getpass or getpass-gnu for portability");
1520 # endif
1521 #endif
1522 
1523 
1524 #if 0
1525 /* Return the next valid login shell on the system, or NULL when the end of
1526    the list has been reached.  */
1527 # if !1
1528 _GL_FUNCDECL_SYS (getusershell, char *, (void));
1529 # endif
1530 _GL_CXXALIAS_SYS (getusershell, char *, (void));
1531 _GL_CXXALIASWARN (getusershell);
1532 #elif defined GNULIB_POSIXCHECK
1533 # undef getusershell
1534 # if HAVE_RAW_DECL_GETUSERSHELL
1535 _GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
1536                  "use gnulib module getusershell for portability");
1537 # endif
1538 #endif
1539 
1540 #if 0
1541 /* Rewind to pointer that is advanced at each getusershell() call.  */
1542 # if !1
1543 _GL_FUNCDECL_SYS (setusershell, void, (void));
1544 # endif
1545 _GL_CXXALIAS_SYS (setusershell, void, (void));
1546 _GL_CXXALIASWARN (setusershell);
1547 #elif defined GNULIB_POSIXCHECK
1548 # undef setusershell
1549 # if HAVE_RAW_DECL_SETUSERSHELL
1550 _GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
1551                  "use gnulib module getusershell for portability");
1552 # endif
1553 #endif
1554 
1555 #if 0
1556 /* Free the pointer that is advanced at each getusershell() call and
1557    associated resources.  */
1558 # if !1
1559 _GL_FUNCDECL_SYS (endusershell, void, (void));
1560 # endif
1561 _GL_CXXALIAS_SYS (endusershell, void, (void));
1562 _GL_CXXALIASWARN (endusershell);
1563 #elif defined GNULIB_POSIXCHECK
1564 # undef endusershell
1565 # if HAVE_RAW_DECL_ENDUSERSHELL
1566 _GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
1567                  "use gnulib module getusershell for portability");
1568 # endif
1569 #endif
1570 
1571 
1572 #if 0
1573 /* Determine whether group id is in calling user's group list.  */
1574 # if !1
1575 _GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
1576 # endif
1577 _GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
1578 _GL_CXXALIASWARN (group_member);
1579 #elif defined GNULIB_POSIXCHECK
1580 # undef group_member
1581 # if HAVE_RAW_DECL_GROUP_MEMBER
1582 _GL_WARN_ON_USE (group_member, "group_member is unportable - "
1583                  "use gnulib module group-member for portability");
1584 # endif
1585 #endif
1586 
1587 
1588 #if 0
1589 # if 0
1590 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1591 #   undef isatty
1592 #   define isatty rpl_isatty
1593 #  endif
1594 _GL_FUNCDECL_RPL (isatty, int, (int fd));
1595 _GL_CXXALIAS_RPL (isatty, int, (int fd));
1596 # else
1597 _GL_CXXALIAS_SYS (isatty, int, (int fd));
1598 # endif
1599 _GL_CXXALIASWARN (isatty);
1600 #elif defined GNULIB_POSIXCHECK
1601 # undef isatty
1602 # if HAVE_RAW_DECL_ISATTY
1603 _GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - "
1604                  "use gnulib module isatty for portability");
1605 # endif
1606 #endif
1607 
1608 
1609 #if 0
1610 /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
1611    to GID (if GID is not -1).  Do not follow symbolic links.
1612    Return 0 if successful, otherwise -1 and errno set.
1613    See the POSIX:2008 specification
1614    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>.  */
1615 # if 0
1616 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1617 #   undef lchown
1618 #   define lchown rpl_lchown
1619 #  endif
1620 _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
1621                                _GL_ARG_NONNULL ((1)));
1622 _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
1623 # else
1624 #  if !1
1625 _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
1626                                _GL_ARG_NONNULL ((1)));
1627 #  endif
1628 _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
1629 # endif
1630 _GL_CXXALIASWARN (lchown);
1631 #elif defined GNULIB_POSIXCHECK
1632 # undef lchown
1633 # if HAVE_RAW_DECL_LCHOWN
1634 _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
1635                  "use gnulib module lchown for portability");
1636 # endif
1637 #endif
1638 
1639 
1640 #if 0
1641 /* Create a new hard link for an existing file.
1642    Return 0 if successful, otherwise -1 and errno set.
1643    See POSIX:2008 specification
1644    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>.  */
1645 # if 0
1646 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1647 #   define link rpl_link
1648 #  endif
1649 _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
1650                              _GL_ARG_NONNULL ((1, 2)));
1651 _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
1652 # else
1653 #  if !1
1654 _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
1655                              _GL_ARG_NONNULL ((1, 2)));
1656 #  endif
1657 _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
1658 # endif
1659 _GL_CXXALIASWARN (link);
1660 #elif defined GNULIB_POSIXCHECK
1661 # undef link
1662 # if HAVE_RAW_DECL_LINK
1663 _GL_WARN_ON_USE (link, "link is unportable - "
1664                  "use gnulib module link for portability");
1665 # endif
1666 #endif
1667 
1668 
1669 #if 0
1670 /* Create a new hard link for an existing file, relative to two
1671    directories.  FLAG controls whether symlinks are followed.
1672    Return 0 if successful, otherwise -1 and errno set.  */
1673 # if 0
1674 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1675 #   undef linkat
1676 #   define linkat rpl_linkat
1677 #  endif
1678 _GL_FUNCDECL_RPL (linkat, int,
1679                   (int fd1, const char *path1, int fd2, const char *path2,
1680                    int flag)
1681                   _GL_ARG_NONNULL ((2, 4)));
1682 _GL_CXXALIAS_RPL (linkat, int,
1683                   (int fd1, const char *path1, int fd2, const char *path2,
1684                    int flag));
1685 # else
1686 #  if !1
1687 _GL_FUNCDECL_SYS (linkat, int,
1688                   (int fd1, const char *path1, int fd2, const char *path2,
1689                    int flag)
1690                   _GL_ARG_NONNULL ((2, 4)));
1691 #  endif
1692 _GL_CXXALIAS_SYS (linkat, int,
1693                   (int fd1, const char *path1, int fd2, const char *path2,
1694                    int flag));
1695 # endif
1696 _GL_CXXALIASWARN (linkat);
1697 #elif defined GNULIB_POSIXCHECK
1698 # undef linkat
1699 # if HAVE_RAW_DECL_LINKAT
1700 _GL_WARN_ON_USE (linkat, "linkat is unportable - "
1701                  "use gnulib module linkat for portability");
1702 # endif
1703 #endif
1704 
1705 
1706 #if 0
1707 /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
1708    Return the new offset if successful, otherwise -1 and errno set.
1709    See the POSIX:2008 specification
1710    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>.  */
1711 # if 0
1712 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1713 #   define lseek rpl_lseek
1714 #  endif
1715 _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
1716 _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
1717 # else
1718 _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
1719 # endif
1720 _GL_CXXALIASWARN (lseek);
1721 #elif defined GNULIB_POSIXCHECK
1722 # undef lseek
1723 # if HAVE_RAW_DECL_LSEEK
1724 _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
1725                  "systems - use gnulib module lseek for portability");
1726 # endif
1727 #endif
1728 
1729 
1730 #if 0
1731 /* Create a pipe, defaulting to O_BINARY mode.
1732    Store the read-end as fd[0] and the write-end as fd[1].
1733    Return 0 upon success, or -1 with errno set upon failure.  */
1734 # if !1
1735 _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
1736 # endif
1737 _GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
1738 _GL_CXXALIASWARN (pipe);
1739 #elif defined GNULIB_POSIXCHECK
1740 # undef pipe
1741 # if HAVE_RAW_DECL_PIPE
1742 _GL_WARN_ON_USE (pipe, "pipe is unportable - "
1743                  "use gnulib module pipe-posix for portability");
1744 # endif
1745 #endif
1746 
1747 
1748 #if 0
1749 /* Create a pipe, applying the given flags when opening the read-end of the
1750    pipe and the write-end of the pipe.
1751    The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
1752    and O_TEXT, O_BINARY (defined in "binary-io.h").
1753    Store the read-end as fd[0] and the write-end as fd[1].
1754    Return 0 upon success, or -1 with errno set upon failure.
1755    See also the Linux man page at
1756    <https://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>.  */
1757 # if 1
1758 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1759 #   define pipe2 rpl_pipe2
1760 #  endif
1761 _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
1762 _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
1763 # else
1764 _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
1765 _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
1766 # endif
1767 _GL_CXXALIASWARN (pipe2);
1768 #elif defined GNULIB_POSIXCHECK
1769 # undef pipe2
1770 # if HAVE_RAW_DECL_PIPE2
1771 _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
1772                  "use gnulib module pipe2 for portability");
1773 # endif
1774 #endif
1775 
1776 
1777 #if 0
1778 /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
1779    Return the number of bytes placed into BUF if successful, otherwise
1780    set errno and return -1.  0 indicates EOF.
1781    See the POSIX:2008 specification
1782    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>.  */
1783 # if 0
1784 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1785 #   undef pread
1786 #   define pread rpl_pread
1787 #  endif
1788 _GL_FUNCDECL_RPL (pread, ssize_t,
1789                   (int fd, void *buf, size_t bufsize, off_t offset)
1790                   _GL_ARG_NONNULL ((2)));
1791 _GL_CXXALIAS_RPL (pread, ssize_t,
1792                   (int fd, void *buf, size_t bufsize, off_t offset));
1793 # else
1794 #  if !1
1795 _GL_FUNCDECL_SYS (pread, ssize_t,
1796                   (int fd, void *buf, size_t bufsize, off_t offset)
1797                   _GL_ARG_NONNULL ((2)));
1798 #  endif
1799 _GL_CXXALIAS_SYS (pread, ssize_t,
1800                   (int fd, void *buf, size_t bufsize, off_t offset));
1801 # endif
1802 _GL_CXXALIASWARN (pread);
1803 #elif defined GNULIB_POSIXCHECK
1804 # undef pread
1805 # if HAVE_RAW_DECL_PREAD
1806 _GL_WARN_ON_USE (pread, "pread is unportable - "
1807                  "use gnulib module pread for portability");
1808 # endif
1809 #endif
1810 
1811 
1812 #if 0
1813 /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
1814    Return the number of bytes written if successful, otherwise
1815    set errno and return -1.  0 indicates nothing written.  See the
1816    POSIX:2008 specification
1817    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>.  */
1818 # if 0
1819 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1820 #   undef pwrite
1821 #   define pwrite rpl_pwrite
1822 #  endif
1823 _GL_FUNCDECL_RPL (pwrite, ssize_t,
1824                   (int fd, const void *buf, size_t bufsize, off_t offset)
1825                   _GL_ARG_NONNULL ((2)));
1826 _GL_CXXALIAS_RPL (pwrite, ssize_t,
1827                   (int fd, const void *buf, size_t bufsize, off_t offset));
1828 # else
1829 #  if !1
1830 _GL_FUNCDECL_SYS (pwrite, ssize_t,
1831                   (int fd, const void *buf, size_t bufsize, off_t offset)
1832                   _GL_ARG_NONNULL ((2)));
1833 #  endif
1834 _GL_CXXALIAS_SYS (pwrite, ssize_t,
1835                   (int fd, const void *buf, size_t bufsize, off_t offset));
1836 # endif
1837 _GL_CXXALIASWARN (pwrite);
1838 #elif defined GNULIB_POSIXCHECK
1839 # undef pwrite
1840 # if HAVE_RAW_DECL_PWRITE
1841 _GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
1842                  "use gnulib module pwrite for portability");
1843 # endif
1844 #endif
1845 
1846 
1847 #if 0
1848 /* Read up to COUNT bytes from file descriptor FD into the buffer starting
1849    at BUF.  See the POSIX:2008 specification
1850    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>.  */
1851 # if 0
1852 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1853 #   undef read
1854 #   define read rpl_read
1855 #  endif
1856 _GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
1857                                  _GL_ARG_NONNULL ((2)));
1858 _GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
1859 # else
1860 /* Need to cast, because on mingw, the third parameter is
1861                                                           unsigned int count
1862    and the return type is 'int'.  */
1863 _GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
1864 # endif
1865 _GL_CXXALIASWARN (read);
1866 #endif
1867 
1868 
1869 #if 1
1870 /* Read the contents of the symbolic link FILE and place the first BUFSIZE
1871    bytes of it into BUF.  Return the number of bytes placed into BUF if
1872    successful, otherwise -1 and errno set.
1873    See the POSIX:2008 specification
1874    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>.  */
1875 # if 0
1876 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1877 #   define readlink rpl_readlink
1878 #  endif
1879 _GL_FUNCDECL_RPL (readlink, ssize_t,
1880                   (const char *restrict file,
1881                    char *restrict buf, size_t bufsize)
1882                   _GL_ARG_NONNULL ((1, 2)));
1883 _GL_CXXALIAS_RPL (readlink, ssize_t,
1884                   (const char *restrict file,
1885                    char *restrict buf, size_t bufsize));
1886 # else
1887 #  if !1
1888 _GL_FUNCDECL_SYS (readlink, ssize_t,
1889                   (const char *restrict file,
1890                    char *restrict buf, size_t bufsize)
1891                   _GL_ARG_NONNULL ((1, 2)));
1892 #  endif
1893 _GL_CXXALIAS_SYS (readlink, ssize_t,
1894                   (const char *restrict file,
1895                    char *restrict buf, size_t bufsize));
1896 # endif
1897 _GL_CXXALIASWARN (readlink);
1898 #elif defined GNULIB_POSIXCHECK
1899 # undef readlink
1900 # if HAVE_RAW_DECL_READLINK
1901 _GL_WARN_ON_USE (readlink, "readlink is unportable - "
1902                  "use gnulib module readlink for portability");
1903 # endif
1904 #endif
1905 
1906 
1907 #if 0
1908 # if 0
1909 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1910 #   define readlinkat rpl_readlinkat
1911 #  endif
1912 _GL_FUNCDECL_RPL (readlinkat, ssize_t,
1913                   (int fd, char const *restrict file,
1914                    char *restrict buf, size_t len)
1915                   _GL_ARG_NONNULL ((2, 3)));
1916 _GL_CXXALIAS_RPL (readlinkat, ssize_t,
1917                   (int fd, char const *restrict file,
1918                    char *restrict buf, size_t len));
1919 # else
1920 #  if !1
1921 _GL_FUNCDECL_SYS (readlinkat, ssize_t,
1922                   (int fd, char const *restrict file,
1923                    char *restrict buf, size_t len)
1924                   _GL_ARG_NONNULL ((2, 3)));
1925 #  endif
1926 _GL_CXXALIAS_SYS (readlinkat, ssize_t,
1927                   (int fd, char const *restrict file,
1928                    char *restrict buf, size_t len));
1929 # endif
1930 _GL_CXXALIASWARN (readlinkat);
1931 #elif defined GNULIB_POSIXCHECK
1932 # undef readlinkat
1933 # if HAVE_RAW_DECL_READLINKAT
1934 _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
1935                  "use gnulib module readlinkat for portability");
1936 # endif
1937 #endif
1938 
1939 
1940 #if 1
1941 /* Remove the directory DIR.  */
1942 # if 0
1943 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1944 #   define rmdir rpl_rmdir
1945 #  endif
1946 _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
1947 _GL_CXXALIAS_RPL (rmdir, int, (char const *name));
1948 # else
1949 _GL_CXXALIAS_SYS (rmdir, int, (char const *name));
1950 # endif
1951 _GL_CXXALIASWARN (rmdir);
1952 #elif defined GNULIB_POSIXCHECK
1953 # undef rmdir
1954 # if HAVE_RAW_DECL_RMDIR
1955 _GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
1956                  "use gnulib module rmdir for portability");
1957 # endif
1958 #endif
1959 
1960 
1961 #if 0
1962 /* Set the host name of the machine.
1963    The host name may or may not be fully qualified.
1964 
1965    Put LEN bytes of NAME into the host name.
1966    Return 0 if successful, otherwise, set errno and return -1.
1967 
1968    Platforms with no ability to set the hostname return -1 and set
1969    errno = ENOSYS.  */
1970 # if !1 || !1
1971 _GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len)
1972                                     _GL_ARG_NONNULL ((1)));
1973 # endif
1974 /* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5
1975    and FreeBSD 6.4 the second parameter is int.  On Solaris 11
1976    2011-10, the first parameter is not const.  */
1977 _GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len));
1978 _GL_CXXALIASWARN (sethostname);
1979 #elif defined GNULIB_POSIXCHECK
1980 # undef sethostname
1981 # if HAVE_RAW_DECL_SETHOSTNAME
1982 _GL_WARN_ON_USE (sethostname, "sethostname is unportable - "
1983                  "use gnulib module sethostname for portability");
1984 # endif
1985 #endif
1986 
1987 
1988 #if 0
1989 /* Pause the execution of the current thread for N seconds.
1990    Returns the number of seconds left to sleep.
1991    See the POSIX:2008 specification
1992    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>.  */
1993 # if 0
1994 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1995 #   undef sleep
1996 #   define sleep rpl_sleep
1997 #  endif
1998 _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
1999 _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
2000 # else
2001 #  if !1
2002 _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
2003 #  endif
2004 _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
2005 # endif
2006 _GL_CXXALIASWARN (sleep);
2007 #elif defined GNULIB_POSIXCHECK
2008 # undef sleep
2009 # if HAVE_RAW_DECL_SLEEP
2010 _GL_WARN_ON_USE (sleep, "sleep is unportable - "
2011                  "use gnulib module sleep for portability");
2012 # endif
2013 #endif
2014 
2015 
2016 #if 0
2017 # if 0
2018 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2019 #   undef symlink
2020 #   define symlink rpl_symlink
2021 #  endif
2022 _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
2023                                 _GL_ARG_NONNULL ((1, 2)));
2024 _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
2025 # else
2026 #  if !1
2027 _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
2028                                 _GL_ARG_NONNULL ((1, 2)));
2029 #  endif
2030 _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
2031 # endif
2032 _GL_CXXALIASWARN (symlink);
2033 #elif defined GNULIB_POSIXCHECK
2034 # undef symlink
2035 # if HAVE_RAW_DECL_SYMLINK
2036 _GL_WARN_ON_USE (symlink, "symlink is not portable - "
2037                  "use gnulib module symlink for portability");
2038 # endif
2039 #endif
2040 
2041 
2042 #if 0
2043 # if 0
2044 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2045 #   undef symlinkat
2046 #   define symlinkat rpl_symlinkat
2047 #  endif
2048 _GL_FUNCDECL_RPL (symlinkat, int,
2049                   (char const *contents, int fd, char const *file)
2050                   _GL_ARG_NONNULL ((1, 3)));
2051 _GL_CXXALIAS_RPL (symlinkat, int,
2052                   (char const *contents, int fd, char const *file));
2053 # else
2054 #  if !1
2055 _GL_FUNCDECL_SYS (symlinkat, int,
2056                   (char const *contents, int fd, char const *file)
2057                   _GL_ARG_NONNULL ((1, 3)));
2058 #  endif
2059 _GL_CXXALIAS_SYS (symlinkat, int,
2060                   (char const *contents, int fd, char const *file));
2061 # endif
2062 _GL_CXXALIASWARN (symlinkat);
2063 #elif defined GNULIB_POSIXCHECK
2064 # undef symlinkat
2065 # if HAVE_RAW_DECL_SYMLINKAT
2066 _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
2067                  "use gnulib module symlinkat for portability");
2068 # endif
2069 #endif
2070 
2071 
2072 #if 0
2073 /* Change the size of the file designated by FILENAME to become equal to LENGTH.
2074    Return 0 if successful, otherwise -1 and errno set.
2075    See the POSIX:2008 specification
2076    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html>.  */
2077 # if 0
2078 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2079 #   undef truncate
2080 #   define truncate rpl_truncate
2081 #  endif
2082 _GL_FUNCDECL_RPL (truncate, int, (const char *filename, off_t length)
2083                                  _GL_ARG_NONNULL ((1)));
2084 _GL_CXXALIAS_RPL (truncate, int, (const char *filename, off_t length));
2085 # else
2086 #  if !1
2087 _GL_FUNCDECL_SYS (truncate, int, (const char *filename, off_t length)
2088                                  _GL_ARG_NONNULL ((1)));
2089 #  endif
2090 _GL_CXXALIAS_SYS (truncate, int, (const char *filename, off_t length));
2091 # endif
2092 _GL_CXXALIASWARN (truncate);
2093 #elif defined GNULIB_POSIXCHECK
2094 # undef truncate
2095 # if HAVE_RAW_DECL_TRUNCATE
2096 _GL_WARN_ON_USE (truncate, "truncate is unportable - "
2097                  "use gnulib module truncate for portability");
2098 # endif
2099 #endif
2100 
2101 
2102 #if 0
2103 /* Store at most BUFLEN characters of the pathname of the terminal FD is
2104    open on in BUF.  Return 0 on success, otherwise an error number.  */
2105 # if 0
2106 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2107 #   undef ttyname_r
2108 #   define ttyname_r rpl_ttyname_r
2109 #  endif
2110 _GL_FUNCDECL_RPL (ttyname_r, int,
2111                   (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
2112 _GL_CXXALIAS_RPL (ttyname_r, int,
2113                   (int fd, char *buf, size_t buflen));
2114 # else
2115 #  if !1
2116 _GL_FUNCDECL_SYS (ttyname_r, int,
2117                   (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
2118 #  endif
2119 _GL_CXXALIAS_SYS (ttyname_r, int,
2120                   (int fd, char *buf, size_t buflen));
2121 # endif
2122 _GL_CXXALIASWARN (ttyname_r);
2123 #elif defined GNULIB_POSIXCHECK
2124 # undef ttyname_r
2125 # if HAVE_RAW_DECL_TTYNAME_R
2126 _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
2127                  "use gnulib module ttyname_r for portability");
2128 # endif
2129 #endif
2130 
2131 
2132 #if 0
2133 # if 0
2134 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2135 #   undef unlink
2136 #   define unlink rpl_unlink
2137 #  endif
2138 _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
2139 _GL_CXXALIAS_RPL (unlink, int, (char const *file));
2140 # else
2141 _GL_CXXALIAS_SYS (unlink, int, (char const *file));
2142 # endif
2143 _GL_CXXALIASWARN (unlink);
2144 #elif defined GNULIB_POSIXCHECK
2145 # undef unlink
2146 # if HAVE_RAW_DECL_UNLINK
2147 _GL_WARN_ON_USE (unlink, "unlink is not portable - "
2148                  "use gnulib module unlink for portability");
2149 # endif
2150 #endif
2151 
2152 
2153 #if 0
2154 # if 0
2155 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2156 #   undef unlinkat
2157 #   define unlinkat rpl_unlinkat
2158 #  endif
2159 _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
2160                                  _GL_ARG_NONNULL ((2)));
2161 _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
2162 # else
2163 #  if !1
2164 _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
2165                                  _GL_ARG_NONNULL ((2)));
2166 #  endif
2167 _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
2168 # endif
2169 _GL_CXXALIASWARN (unlinkat);
2170 #elif defined GNULIB_POSIXCHECK
2171 # undef unlinkat
2172 # if HAVE_RAW_DECL_UNLINKAT
2173 _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
2174                  "use gnulib module openat for portability");
2175 # endif
2176 #endif
2177 
2178 
2179 #if 0
2180 /* Pause the execution of the current thread for N microseconds.
2181    Returns 0 on completion, or -1 on range error.
2182    See the POSIX:2001 specification
2183    <https://pubs.opengroup.org/onlinepubs/009695399/functions/usleep.html>.  */
2184 # if 0
2185 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2186 #   undef usleep
2187 #   define usleep rpl_usleep
2188 #  endif
2189 _GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
2190 _GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
2191 # else
2192 #  if !1
2193 _GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
2194 #  endif
2195 /* Need to cast, because on Haiku, the first parameter is
2196                                      unsigned int n.  */
2197 _GL_CXXALIAS_SYS_CAST (usleep, int, (useconds_t n));
2198 # endif
2199 _GL_CXXALIASWARN (usleep);
2200 #elif defined GNULIB_POSIXCHECK
2201 # undef usleep
2202 # if HAVE_RAW_DECL_USLEEP
2203 _GL_WARN_ON_USE (usleep, "usleep is unportable - "
2204                  "use gnulib module usleep for portability");
2205 # endif
2206 #endif
2207 
2208 
2209 #if 0
2210 /* Write up to COUNT bytes starting at BUF to file descriptor FD.
2211    See the POSIX:2008 specification
2212    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>.  */
2213 # if 0
2214 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2215 #   undef write
2216 #   define write rpl_write
2217 #  endif
2218 _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
2219                                   _GL_ARG_NONNULL ((2)));
2220 _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
2221 # else
2222 /* Need to cast, because on mingw, the third parameter is
2223                                                              unsigned int count
2224    and the return type is 'int'.  */
2225 _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
2226 # endif
2227 _GL_CXXALIASWARN (write);
2228 #endif
2229 
2230 _GL_INLINE_HEADER_END
2231 
2232 #endif /* _GL_UNISTD_H */
2233 #endif /* _GL_INCLUDING_UNISTD_H */
2234 #endif /* _GL_UNISTD_H */
2235