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