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