105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Substitute for and wrapper around <unistd.h>.
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2003-2012 Free Software Foundation, Inc.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software; you can redistribute it and/or modify
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3, or (at your option)
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   any later version.
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_SYSTEM_HEADER@
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_COLUMNS@
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention:
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but we need to ensure that both the system <unistd.h> and <winsock2.h>
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     are completely included before we replace gethostname.  */
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* <unistd.h> is being indirectly included for the first time from
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <winsock2.h>; avoid declaring any overrides.  */
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_UNISTD_H@
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  @INCLUDE_NEXT@ @NEXT_UNISTD_H@
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  error unexpected; report this to bug-gnulib@gnu.org
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_WINSOCK2_H_WITNESS
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation.  */
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif !defined _@GUARD_PREFIX@_UNISTD_H
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @HAVE_UNISTD_H@
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get all possible declarations of gethostname().  */
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  && !defined _GL_INCLUDING_WINSOCK2_H
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_INCLUDING_WINSOCK2_H
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <winsock2.h>
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef _GL_INCLUDING_WINSOCK2_H
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _@GUARD_PREFIX@_UNISTD_H
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stddef.h>
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>.  */
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang         && defined __CYGWIN__)) \
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdio.h>
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>.  */
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <fcntl.h>
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw fails to declare _exit in <unistd.h>.  */
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <unistd.h>.  */
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>.  */
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef __GLIBC__
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdlib.h>
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Native Windows platforms declare chdir, getcwd, rmdir in
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <io.h> and/or <direct.h>, not in <unistd.h>.
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   They also declare access(), chmod(), close(), dup(), dup2(), isatty(),
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   lseek(), read(), unlink(), write() in <io.h>.  */
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      || defined GNULIB_POSIXCHECK) \
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <io.h>     /* mingw32, mingw64 */
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <direct.h> /* mingw64, MSVC 9 */
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       || defined GNULIB_POSIXCHECK) \
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <io.h>
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>.  */
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* But avoid namespace pollution on glibc systems.  */
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && !defined __GLIBC__
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <netdb.h>
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* MSVC defines off_t in <sys/types.h>.
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   May also define off_t to a 64-bit type on native Windows.  */
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !@HAVE_UNISTD_H@ || @WINDOWS_64_BIT_OFF_T@
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get off_t.  */
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/types.h>
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (@GNULIB_READ@ || @GNULIB_WRITE@ \
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get ssize_t.  */
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <sys/types.h>
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get getopt(), optarg, optind, opterr, optopt.
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   But avoid namespace pollution on glibc systems.  */
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <getopt.h>
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_BEGIN
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_UNISTD_INLINE
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_UNISTD_INLINE _GL_INLINE
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here.  */
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Hide some function declarations from <winsock2.h>.  */
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef socket
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define socket              socket_used_without_including_sys_socket_h
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef connect
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define connect             connect_used_without_including_sys_socket_h
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef accept
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define accept              accept_used_without_including_sys_socket_h
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef bind
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define bind                bind_used_without_including_sys_socket_h
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getpeername
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getpeername         getpeername_used_without_including_sys_socket_h
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getsockname
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getsockname         getsockname_used_without_including_sys_socket_h
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getsockopt
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getsockopt          getsockopt_used_without_including_sys_socket_h
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef listen
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define listen              listen_used_without_including_sys_socket_h
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef recv
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define recv                recv_used_without_including_sys_socket_h
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef send
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define send                send_used_without_including_sys_socket_h
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef recvfrom
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define recvfrom            recvfrom_used_without_including_sys_socket_h
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sendto
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sendto              sendto_used_without_including_sys_socket_h
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef setsockopt
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define setsockopt          setsockopt_used_without_including_sys_socket_h
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef shutdown
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define shutdown            shutdown_used_without_including_sys_socket_h
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (socket,
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "socket() used without including <sys/socket.h>");
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (connect,
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "connect() used without including <sys/socket.h>");
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (accept,
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "accept() used without including <sys/socket.h>");
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (bind,
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "bind() used without including <sys/socket.h>");
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (getpeername,
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "getpeername() used without including <sys/socket.h>");
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (getsockname,
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "getsockname() used without including <sys/socket.h>");
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (getsockopt,
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "getsockopt() used without including <sys/socket.h>");
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (listen,
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "listen() used without including <sys/socket.h>");
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (recv,
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "recv() used without including <sys/socket.h>");
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (send,
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "send() used without including <sys/socket.h>");
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (recvfrom,
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "recvfrom() used without including <sys/socket.h>");
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (sendto,
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "sendto() used without including <sys/socket.h>");
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (setsockopt,
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "setsockopt() used without including <sys/socket.h>");
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (shutdown,
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "shutdown() used without including <sys/socket.h>");
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef select
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define select              select_used_without_including_sys_select_h
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (select,
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "select() used without including <sys/select.h>");
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* OS/2 EMX lacks these macros.  */
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef STDIN_FILENO
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define STDIN_FILENO 0
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef STDOUT_FILENO
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define STDOUT_FILENO 1
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef STDERR_FILENO
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define STDERR_FILENO 2
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Ensure *_OK macros exist.  */
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef F_OK
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define F_OK 0
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define X_OK 1
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define W_OK 2
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define R_OK 4
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Declare overridden functions.  */
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined GNULIB_POSIXCHECK
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The access() function is a security risk.  */
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (access, "the access function is a security risk - "
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module faccessat instead");
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_CHDIR@
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1)));
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (chdir);
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef chdir
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_CHDIR
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module chdir for portability");
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_CHOWN@
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   to GID (if GID is not -1).  Follow symbolic links.
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html.  */
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_CHOWN@
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef chown
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define chown rpl_chown
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1)));
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_CHOWN@
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              _GL_ARG_NONNULL ((1)));
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (chown);
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef chown
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_CHOWN
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "doesn't treat a uid or gid of -1 on some systems - "
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module chown for portability");
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_CLOSE@
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_CLOSE@
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Automatically included by modules that need a replacement for close.  */
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef close
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define close rpl_close
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (close, int, (int fd));
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (close, int, (int fd));
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (close, int, (int fd));
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (close);
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef close
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define close close_used_without_requesting_gnulib_module_close
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef close
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume close is always declared.  */
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module close for portability");
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_DUP@
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_DUP@
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dup rpl_dup
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dup, int, (int oldfd));
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dup, int, (int oldfd));
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dup, int, (int oldfd));
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dup);
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dup
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DUP
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dup, "dup is unportable - "
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dup for portability");
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_DUP2@
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return newfd if successful, otherwise -1 and errno set.
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>.  */
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_DUP2@
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dup2 rpl_dup2
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_DUP2@
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dup2);
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dup2
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DUP2
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dup2, "dup2 is unportable - "
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dup2 for portability");
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_DUP3@
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   specified flags.
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and O_TEXT, O_BINARY (defined in "binary-io.h").
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Close NEWFD first if it is open.
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return newfd if successful, otherwise -1 and errno set.
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the Linux man page at
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>.  */
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_DUP3@
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define dup3 rpl_dup3
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (dup3);
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef dup3
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_DUP3
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (dup3, "dup3 is unportable - "
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module dup3 for portability");
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_ENVIRON@
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_DECL_ENVIRON@
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set of environment variables and values.  An array of strings of the form
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   "VARIABLE=VALUE", terminated with a NULL.  */
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __APPLE__ && defined __MACH__
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   include <crt_externs.h>
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define environ (*_NSGetEnviron ())
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   ifdef __cplusplus
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" {
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern char **environ;
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   ifdef __cplusplus
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ENVIRON
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_UNISTD_INLINE char ***
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_environ (void)
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return &environ;
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (rpl_environ, "environ is unportable - "
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module environ for portability");
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef environ
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define environ (*rpl_environ ())
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_EUIDACCESS@
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Like access(), except that it uses the effective user id and group id of
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the current process.  */
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_EUIDACCESS@
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   _GL_ARG_NONNULL ((1)));
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (euidaccess);
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined GNULIB_POSIXCHECK
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Like access(), this function is a security risk.  */
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module faccessat instead");
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef euidaccess
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_EUIDACCESS
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module euidaccess for portability");
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FACCESSAT@
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_FACCESSAT@
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (faccessat, int,
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, int mode, int flag)
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (faccessat, int,
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, int mode, int flag));
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (faccessat);
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef faccessat
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FACCESSAT
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module faccessat for portability");
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FCHDIR@
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the process' current working directory to the directory on which
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the given file descriptor is open.
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>.  */
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! @HAVE_FCHDIR@
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Gnulib internal hooks needed to maintain the fchdir metadata.  */
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_ARG_NONNULL ((2));
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C void _gl_unregister_fd (int fd);
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C const char *_gl_directory_name (int fd);
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_DECL_FCHDIR@
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fchdir);
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fchdir
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FCHDIR
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fchdir for portability");
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FCHOWNAT@
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_FCHOWNAT@
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef fchownat
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define fchownat rpl_fchownat
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag)
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag));
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_FCHOWNAT@
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag)
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  uid_t owner, gid_t group, int flag));
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fchownat);
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fchownat
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FCHOWNAT
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module openat for portability");
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FDATASYNC@
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Synchronize changes to a file.
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See POSIX:2008 specification
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>.  */
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fdatasync, int, (int fd));
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fdatasync);
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fdatasync
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FDATASYNC
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fdatasync for portability");
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FSYNC@
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Synchronize changes, including metadata, to a file.
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See POSIX:2008 specification
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>.  */
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_FSYNC@
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (fsync, int, (int fd));
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (fsync, int, (int fd));
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (fsync);
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef fsync
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FSYNC
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (fsync, "fsync is unportable - "
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module fsync for portability");
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_FTRUNCATE@
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the size of the file to which FD is opened to become equal to LENGTH.
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>.  */
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_FTRUNCATE@
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef ftruncate
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define ftruncate rpl_ftruncate
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length));
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length));
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_FTRUNCATE@
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (ftruncate);
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef ftruncate
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_FTRUNCATE
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module ftruncate for portability");
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETCWD@
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get the name of the current working directory, and put it in SIZE bytes
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   of BUF.
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return BUF if successful, or NULL if the directory couldn't be determined
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   or SIZE was too small.
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Additionally, the gnulib module 'getcwd' guarantees the following GNU
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   extension: If BUF is NULL, an array is allocated with 'malloc'; the array
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is SIZE bytes long, unless SIZE == 0, in which case it is as big as
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   necessary.  */
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_GETCWD@
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getcwd rpl_getcwd
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the second parameter is
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                   int size.  */
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getcwd);
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getcwd
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETCWD
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getcwd for portability");
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETDOMAINNAME@
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the NIS domain name of the machine.
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   WARNING! The NIS domain name is unrelated to the fully qualified host name
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            of the machine.  It is also unrelated to email addresses.
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   WARNING! The NIS domain name is usually the empty string or "(none)" when
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            not using NIS.
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Put up to LEN bytes of the NIS domain name into NAME.
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Null terminate it if the name is shorter than LEN.
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise set errno and return -1.  */
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_GETDOMAINNAME@
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getdomainname
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getdomainname rpl_getdomainname
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                      _GL_ARG_NONNULL ((1)));
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_DECL_GETDOMAINNAME@
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                      _GL_ARG_NONNULL ((1)));
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getdomainname);
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getdomainname
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETDOMAINNAME
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getdomainname for portability");
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETDTABLESIZE@
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the maximum number of file descriptors in the current process.
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_GETDTABLESIZE@
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getdtablesize, int, (void));
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getdtablesize, int, (void));
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getdtablesize);
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getdtablesize
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETDTABLESIZE
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getdtablesize for portability");
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETGROUPS@
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the supplemental groups that the current process belongs to.
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   It is unspecified whether the effective group id is in the list.
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If N is 0, return the group count; otherwise, N describes how many
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   entries are available in GROUPS.  Return -1 and set errno if N is
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not 0 and not large enough.  Fails with ENOSYS on some systems.  */
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_GETGROUPS@
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef getgroups
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getgroups rpl_getgroups
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_GETGROUPS@
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getgroups);
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getgroups
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETGROUPS
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getgroups for portability");
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETHOSTNAME@
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the standard host name of the machine.
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   WARNING! The host name may or may not be fully qualified.
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Put up to LEN bytes of the host name into NAME.
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Null terminate it if the name is shorter than LEN.
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If the host name is longer than LEN, set errno = EINVAL and return -1.
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise set errno and return -1.  */
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @UNISTD_H_HAVE_WINSOCK2_H@
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef gethostname
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define gethostname rpl_gethostname
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_GETHOSTNAME@
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   parameter is
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                      int len.  */
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (gethostname);
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif @UNISTD_H_HAVE_WINSOCK2_H@
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef gethostname
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef gethostname
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETHOSTNAME
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module gethostname for portability");
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETLOGIN@
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Returns the user's login name, or NULL if it cannot be found.  Upon error,
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   returns NULL with errno set.
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Most programs don't need to use this function, because the information is
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   available through environment variables:
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     ${LOGNAME-$USER}        on Unix platforms,
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     $USERNAME               on native Windows platforms.
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_GETLOGIN@
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getlogin, char *, (void));
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getlogin, char *, (void));
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getlogin);
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getlogin
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETLOGIN
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getlogin for portability");
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETLOGIN_R@
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copies the user's login name to NAME.
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The array pointed to by NAME has room for SIZE bytes.
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the case that the login name cannot be found but no specific error is
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   provided (this case is hopefully rare but is left open by the POSIX spec).
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Most programs don't need to use this function, because the information is
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   available through environment variables:
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     ${LOGNAME-$USER}        on Unix platforms,
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     $USERNAME               on native Windows platforms.
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_GETLOGIN_R@
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getlogin_r rpl_getlogin_r
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   _GL_ARG_NONNULL ((1)));
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_DECL_GETLOGIN_R@
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   _GL_ARG_NONNULL ((1)));
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris 10 systems, the second argument is
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                     int size.  */
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getlogin_r);
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getlogin_r
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETLOGIN_R
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getlogin_r for portability");
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETPAGESIZE@
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_GETPAGESIZE@
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define getpagesize rpl_getpagesize
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (getpagesize, int, (void));
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (getpagesize, int, (void));
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_GETPAGESIZE@
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !defined getpagesize
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for POSIX systems.  */
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && defined _SC_PAGESIZE
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     if ! (defined __VMS && __VMS_VER < 70000000)
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() sysconf (_SC_PAGESIZE)
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for older VMS.  */
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && defined __VMS
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     ifdef __ALPHA
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() 8192
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     else
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() 512
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for BeOS.  */
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && @HAVE_OS_H@
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     include <OS.h>
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     if defined B_PAGE_SIZE
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() B_PAGE_SIZE
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for AmigaOS4.0.  */
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && defined __amigaos4__
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     define _gl_getpagesize() 2048
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This is for older Unix systems.  */
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     include <sys/param.h>
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     ifdef EXEC_PAGESIZE
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define _gl_getpagesize() EXEC_PAGESIZE
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     else
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      ifdef NBPG
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       ifndef CLSIZE
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#        define CLSIZE 1
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       endif
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       define _gl_getpagesize() (NBPG * CLSIZE)
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      else
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       ifdef NBPC
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#        define _gl_getpagesize() NBPC
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#       endif
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      endif
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     define getpagesize() _gl_getpagesize ()
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    else
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     if !GNULIB_defined_getpagesize_function
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_UNISTD_INLINE int
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wanggetpagesize ()
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return _gl_getpagesize ();
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#      define GNULIB_defined_getpagesize_function 1
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#     endif
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    endif
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  */
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_DECL_GETPAGESIZE@
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getpagesize);
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getpagesize
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETPAGESIZE
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getpagesize for portability");
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETUSERSHELL@
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the next valid login shell on the system, or NULL when the end of
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the list has been reached.  */
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_DECL_GETUSERSHELL@
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (getusershell, char *, (void));
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (getusershell, char *, (void));
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (getusershell);
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef getusershell
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GETUSERSHELL
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getusershell for portability");
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETUSERSHELL@
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Rewind to pointer that is advanced at each getusershell() call.  */
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_DECL_GETUSERSHELL@
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (setusershell, void, (void));
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (setusershell, void, (void));
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (setusershell);
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef setusershell
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SETUSERSHELL
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getusershell for portability");
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GETUSERSHELL@
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Free the pointer that is advanced at each getusershell() call and
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   associated resources.  */
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_DECL_GETUSERSHELL@
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (endusershell, void, (void));
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (endusershell, void, (void));
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (endusershell);
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef endusershell
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ENDUSERSHELL
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module getusershell for portability");
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_GROUP_MEMBER@
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Determine whether group id is in calling user's group list.  */
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_GROUP_MEMBER@
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (group_member);
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef group_member
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_GROUP_MEMBER
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (group_member, "group_member is unportable - "
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module group-member for portability");
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_ISATTY@
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_ISATTY@
96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef isatty
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define isatty rpl_isatty
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (isatty, int, (int fd));
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (isatty, int, (int fd));
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (isatty, int, (int fd));
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (isatty);
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef isatty
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ISATTY
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - "
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module isatty for portability");
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_LCHOWN@
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   to GID (if GID is not -1).  Do not follow symbolic links.
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>.  */
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_LCHOWN@
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef lchown
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define lchown rpl_lchown
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_LCHOWN@
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               _GL_ARG_NONNULL ((1)));
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (lchown);
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lchown
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LCHOWN
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module lchown for portability");
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_LINK@
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a new hard link for an existing file.
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See POSIX:2008 specification
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>.  */
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_LINK@
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define link rpl_link
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_ARG_NONNULL ((1, 2)));
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_LINK@
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _GL_ARG_NONNULL ((1, 2)));
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (link);
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef link
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LINK
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (link, "link is unportable - "
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module link for portability");
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_LINKAT@
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a new hard link for an existing file, relative to two
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   directories.  FLAG controls whether symlinks are followed.
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise -1 and errno set.  */
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_LINKAT@
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef linkat
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define linkat rpl_linkat
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (linkat, int,
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag)
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 4)));
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (linkat, int,
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag));
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_LINKAT@
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (linkat, int,
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag)
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 4)));
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (linkat, int,
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd1, const char *path1, int fd2, const char *path2,
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int flag));
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (linkat);
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef linkat
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LINKAT
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (linkat, "linkat is unportable - "
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module linkat for portability");
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_LSEEK@
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the new offset if successful, otherwise -1 and errno set.
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>.  */
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_LSEEK@
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define lseek rpl_lseek
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (lseek);
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef lseek
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_LSEEK
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "systems - use gnulib module lseek for portability");
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_PIPE@
110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a pipe, defaulting to O_BINARY mode.
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Store the read-end as fd[0] and the write-end as fd[1].
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 upon success, or -1 with errno set upon failure.  */
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_PIPE@
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pipe);
111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pipe
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PIPE
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pipe, "pipe is unportable - "
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pipe-posix for portability");
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_PIPE2@
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Create a pipe, applying the given flags when opening the read-end of the
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   pipe and the write-end of the pipe.
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and O_TEXT, O_BINARY (defined in "binary-io.h").
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Store the read-end as fd[0] and the write-end as fd[1].
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 upon success, or -1 with errno set upon failure.
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See also the Linux man page at
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>.  */
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_PIPE2@
112905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pipe2 rpl_pipe2
113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pipe2);
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pipe2
114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PIPE2
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pipe2 for portability");
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_PREAD@
114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the number of bytes placed into BUF if successful, otherwise
115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   set errno and return -1.  0 indicates EOF.
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>.  */
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_PREAD@
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef pread
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pread rpl_pread
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
115905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pread, ssize_t,
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset)
116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pread, ssize_t,
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset));
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_PREAD@
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pread, ssize_t,
116705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset)
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
116905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pread, ssize_t,
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, void *buf, size_t bufsize, off_t offset));
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pread);
117405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
117505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pread
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PREAD
117705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pread, "pread is unportable - "
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pread for portability");
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
118105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_PWRITE@
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return the number of bytes written if successful, otherwise
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   set errno and return -1.  0 indicates nothing written.  See the
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   POSIX:2008 specification
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>.  */
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_PWRITE@
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef pwrite
119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pwrite rpl_pwrite
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
119405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pwrite, ssize_t,
119505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset)
119605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
119705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pwrite, ssize_t,
119805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset));
119905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
120005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_PWRITE@
120105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pwrite, ssize_t,
120205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset)
120305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2)));
120405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
120505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pwrite, ssize_t,
120605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, const void *buf, size_t bufsize, off_t offset));
120705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
120805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pwrite);
120905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
121005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pwrite
121105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PWRITE
121205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
121305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pwrite for portability");
121405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
121505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_READ@
121905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read up to COUNT bytes from file descriptor FD into the buffer starting
122005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   at BUF.  See the POSIX:2008 specification
122105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>.  */
122205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_READ@
122305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
122405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef read
122505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define read rpl_read
122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
122705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
122805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the third parameter is
123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                          unsigned int count
123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and the return type is 'int'.  */
123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (read);
123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_READLINK@
124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Read the contents of the symbolic link FILE and place the first BUFSIZE
124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   bytes of it into BUF.  Return the number of bytes placed into BUF if
124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   successful, otherwise -1 and errno set.
124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>.  */
124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_READLINK@
124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define readlink rpl_readlink
124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (readlink, ssize_t,
125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize)
125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (readlink, ssize_t,
125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize));
125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
125605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_READLINK@
125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (readlink, ssize_t,
125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize)
125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 2)));
126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
126105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (readlink, ssize_t,
126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (const char *file, char *buf, size_t bufsize));
126305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
126405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (readlink);
126505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
126605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef readlink
126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_READLINK
126805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (readlink, "readlink is unportable - "
126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module readlink for portability");
127005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
127105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_READLINKAT@
127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_READLINKAT@
127605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (readlinkat, ssize_t,
127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, char *buf, size_t len)
127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((2, 3)));
127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (readlinkat, ssize_t,
128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char const *file, char *buf, size_t len));
128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (readlinkat);
128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef readlinkat
128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_READLINKAT
128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module readlinkat for portability");
128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_RMDIR@
129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Remove the directory DIR.  */
129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_RMDIR@
129505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define rmdir rpl_rmdir
129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (rmdir, int, (char const *name));
130005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
130105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (rmdir, int, (char const *name));
130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (rmdir);
130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
130505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef rmdir
130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_RMDIR
130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
130805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module rmdir for portability");
130905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
131105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SETHOSTNAME@
131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set the host name of the machine.
131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The host name may or may not be fully qualified.
131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Put LEN bytes of NAME into the host name.
131805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Return 0 if successful, otherwise, set errno and return -1.
131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Platforms with no ability to set the hostname return -1 and set
132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errno = ENOSYS.  */
132205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@
132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len)
132405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
132505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5
132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and FreeBSD 6.4 the second parameter is int.  On Solaris 11
132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   2011-10, the first parameter is not const.  */
132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len));
133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sethostname);
133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sethostname
133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SETHOSTNAME
133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sethostname, "sethostname is unportable - "
133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module sethostname for portability");
133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
133705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
133805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SLEEP@
134105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Pause the execution of the current thread for N seconds.
134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Returns the number of seconds left to sleep.
134305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>.  */
134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_SLEEP@
134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sleep
134805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sleep rpl_sleep
134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_SLEEP@
135405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sleep);
135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
136005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sleep
136105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SLEEP
136205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sleep, "sleep is unportable - "
136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module sleep for portability");
136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
136605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SYMLINK@
136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_SYMLINK@
137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef symlink
137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define symlink rpl_symlink
137305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
137405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
137505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_SYMLINK@
137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                _GL_ARG_NONNULL ((1, 2)));
138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
138205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (symlink);
138505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
138605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef symlink
138705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SYMLINK
138805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (symlink, "symlink is not portable - "
138905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module symlink for portability");
139005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
139105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SYMLINKAT@
139505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_SYMLINKAT@
139605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (symlinkat, int,
139705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char const *contents, int fd, char const *file)
139805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  _GL_ARG_NONNULL ((1, 3)));
139905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (symlinkat, int,
140105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (char const *contents, int fd, char const *file));
140205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (symlinkat);
140305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
140405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef symlinkat
140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SYMLINKAT
140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module symlinkat for portability");
140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
141005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_TTYNAME_R@
141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Store at most BUFLEN characters of the pathname of the terminal FD is
141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   open on in BUF.  Return 0 on success, otherwise an error number.  */
141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_TTYNAME_R@
141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef ttyname_r
141805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define ttyname_r rpl_ttyname_r
141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (ttyname_r, int,
142105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (ttyname_r, int,
142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen));
142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_DECL_TTYNAME_R@
142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (ttyname_r, int,
142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (ttyname_r, int,
143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int fd, char *buf, size_t buflen));
143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (ttyname_r);
143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef ttyname_r
143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_TTYNAME_R
143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module ttyname_r for portability");
143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_UNLINK@
144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_UNLINK@
144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef unlink
144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define unlink rpl_unlink
144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (unlink, int, (char const *file));
145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (unlink, int, (char const *file));
145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (unlink);
145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef unlink
145605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_UNLINK
145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (unlink, "unlink is not portable - "
145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module unlink for portability");
145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_UNLINKAT@
146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_UNLINKAT@
146505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef unlinkat
146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define unlinkat rpl_unlinkat
146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
147105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_UNLINKAT@
147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                 _GL_ARG_NONNULL ((2)));
147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (unlinkat);
148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef unlinkat
148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_UNLINKAT
148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module openat for portability");
148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_USLEEP@
149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Pause the execution of the current thread for N microseconds.
149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Returns 0 on completion, or -1 on range error.
149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2001 specification
149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://www.opengroup.org/susv3xsh/usleep.html>.  */
149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_USLEEP@
149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef usleep
149705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define usleep rpl_usleep
149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_USLEEP@
150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (usleep);
150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef usleep
151005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_USLEEP
151105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (usleep, "usleep is unportable - "
151205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module usleep for portability");
151305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
151505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WRITE@
151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Write up to COUNT bytes starting at BUF to file descriptor FD.
151905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   See the POSIX:2008 specification
152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>.  */
152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WRITE@
152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef write
152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define write rpl_write
152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((2)));
152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
153005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Need to cast, because on mingw, the third parameter is
153105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                             unsigned int count
153205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and the return type is 'int'.  */
153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
153405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (write);
153605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_END
153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_UNISTD_H */
154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_UNISTD_H */
1542