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