1/* Substitute for and wrapper around <unistd.h>. 2 Copyright (C) 2003-2011 Free Software Foundation, Inc. 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 3, or (at your option) 7 any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software Foundation, 16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 17 18#if __GNUC__ >= 3 19@PRAGMA_SYSTEM_HEADER@ 20#endif 21@PRAGMA_COLUMNS@ 22 23/* Special invocation convention: 24 - On mingw, several headers, including <winsock2.h>, include <unistd.h>, 25 but we need to ensure that both the system <unistd.h> and <winsock2.h> 26 are completely included before we replace gethostname. */ 27#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ 28 && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H 29/* <unistd.h> is being indirectly included for the first time from 30 <winsock2.h>; avoid declaring any overrides. */ 31# if @HAVE_UNISTD_H@ 32# @INCLUDE_NEXT@ @NEXT_UNISTD_H@ 33# else 34# error unexpected; report this to bug-gnulib@gnu.org 35# endif 36# define _GL_WINSOCK2_H_WITNESS 37 38/* Normal invocation. */ 39#elif !defined _@GUARD_PREFIX@_UNISTD_H 40 41/* The include_next requires a split double-inclusion guard. */ 42#if @HAVE_UNISTD_H@ 43# @INCLUDE_NEXT@ @NEXT_UNISTD_H@ 44#endif 45 46/* Get all possible declarations of gethostname(). */ 47#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ 48 && !defined _GL_INCLUDING_WINSOCK2_H 49# define _GL_INCLUDING_WINSOCK2_H 50# include <winsock2.h> 51# undef _GL_INCLUDING_WINSOCK2_H 52#endif 53 54#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H 55#define _@GUARD_PREFIX@_UNISTD_H 56 57/* NetBSD 5.0 mis-defines NULL. Also get size_t. */ 58#include <stddef.h> 59 60/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */ 61/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */ 62/* But avoid namespace pollution on glibc systems. */ 63#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ 64 || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ 65 && defined __CYGWIN__)) \ 66 && ! defined __GLIBC__ 67# include <stdio.h> 68#endif 69 70/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */ 71/* But avoid namespace pollution on glibc systems. */ 72#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ 73 && ! defined __GLIBC__ 74# include <fcntl.h> 75#endif 76 77/* mingw fails to declare _exit in <unistd.h>. */ 78/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */ 79/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */ 80/* But avoid namespace pollution on glibc systems. */ 81#ifndef __GLIBC__ 82# include <stdlib.h> 83#endif 84 85/* mingw declares getcwd in <io.h>, not in <unistd.h>. */ 86#if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \ 87 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) 88# include <io.h> 89#endif 90 91/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>. 92 NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>. */ 93/* But avoid namespace pollution on glibc systems. */ 94#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ 95 || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ 96 && !defined __GLIBC__ 97# include <netdb.h> 98#endif 99 100#if (@GNULIB_READ@ || @GNULIB_WRITE@ \ 101 || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ 102 || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK) 103/* Get ssize_t. */ 104# include <sys/types.h> 105#endif 106 107/* Get getopt(), optarg, optind, opterr, optopt. 108 But avoid namespace pollution on glibc systems. */ 109#if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT 110# include <getopt.h> 111#endif 112 113/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 114 115/* The definition of _GL_ARG_NONNULL is copied here. */ 116 117/* The definition of _GL_WARN_ON_USE is copied here. */ 118 119 120/* Hide some function declarations from <winsock2.h>. */ 121 122#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ 123# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H 124# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 125# undef socket 126# define socket socket_used_without_including_sys_socket_h 127# undef connect 128# define connect connect_used_without_including_sys_socket_h 129# undef accept 130# define accept accept_used_without_including_sys_socket_h 131# undef bind 132# define bind bind_used_without_including_sys_socket_h 133# undef getpeername 134# define getpeername getpeername_used_without_including_sys_socket_h 135# undef getsockname 136# define getsockname getsockname_used_without_including_sys_socket_h 137# undef getsockopt 138# define getsockopt getsockopt_used_without_including_sys_socket_h 139# undef listen 140# define listen listen_used_without_including_sys_socket_h 141# undef recv 142# define recv recv_used_without_including_sys_socket_h 143# undef send 144# define send send_used_without_including_sys_socket_h 145# undef recvfrom 146# define recvfrom recvfrom_used_without_including_sys_socket_h 147# undef sendto 148# define sendto sendto_used_without_including_sys_socket_h 149# undef setsockopt 150# define setsockopt setsockopt_used_without_including_sys_socket_h 151# undef shutdown 152# define shutdown shutdown_used_without_including_sys_socket_h 153# else 154 _GL_WARN_ON_USE (socket, 155 "socket() used without including <sys/socket.h>"); 156 _GL_WARN_ON_USE (connect, 157 "connect() used without including <sys/socket.h>"); 158 _GL_WARN_ON_USE (accept, 159 "accept() used without including <sys/socket.h>"); 160 _GL_WARN_ON_USE (bind, 161 "bind() used without including <sys/socket.h>"); 162 _GL_WARN_ON_USE (getpeername, 163 "getpeername() used without including <sys/socket.h>"); 164 _GL_WARN_ON_USE (getsockname, 165 "getsockname() used without including <sys/socket.h>"); 166 _GL_WARN_ON_USE (getsockopt, 167 "getsockopt() used without including <sys/socket.h>"); 168 _GL_WARN_ON_USE (listen, 169 "listen() used without including <sys/socket.h>"); 170 _GL_WARN_ON_USE (recv, 171 "recv() used without including <sys/socket.h>"); 172 _GL_WARN_ON_USE (send, 173 "send() used without including <sys/socket.h>"); 174 _GL_WARN_ON_USE (recvfrom, 175 "recvfrom() used without including <sys/socket.h>"); 176 _GL_WARN_ON_USE (sendto, 177 "sendto() used without including <sys/socket.h>"); 178 _GL_WARN_ON_USE (setsockopt, 179 "setsockopt() used without including <sys/socket.h>"); 180 _GL_WARN_ON_USE (shutdown, 181 "shutdown() used without including <sys/socket.h>"); 182# endif 183# endif 184# if !defined _@GUARD_PREFIX@_SYS_SELECT_H 185# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 186# undef select 187# define select select_used_without_including_sys_select_h 188# else 189 _GL_WARN_ON_USE (select, 190 "select() used without including <sys/select.h>"); 191# endif 192# endif 193#endif 194 195 196/* OS/2 EMX lacks these macros. */ 197#ifndef STDIN_FILENO 198# define STDIN_FILENO 0 199#endif 200#ifndef STDOUT_FILENO 201# define STDOUT_FILENO 1 202#endif 203#ifndef STDERR_FILENO 204# define STDERR_FILENO 2 205#endif 206 207/* Ensure *_OK macros exist. */ 208#ifndef F_OK 209# define F_OK 0 210# define X_OK 1 211# define W_OK 2 212# define R_OK 4 213#endif 214 215 216/* Declare overridden functions. */ 217 218 219#if defined GNULIB_POSIXCHECK 220/* The access() function is a security risk. */ 221_GL_WARN_ON_USE (access, "the access function is a security risk - " 222 "use the gnulib module faccessat instead"); 223#endif 224 225 226#if @GNULIB_CHOWN@ 227/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE 228 to GID (if GID is not -1). Follow symbolic links. 229 Return 0 if successful, otherwise -1 and errno set. 230 See the POSIX:2001 specification 231 <http://www.opengroup.org/susv3xsh/chown.html>. */ 232# if @REPLACE_CHOWN@ 233# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 234# undef chown 235# define chown rpl_chown 236# endif 237_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid) 238 _GL_ARG_NONNULL ((1))); 239_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)); 240# else 241# if !@HAVE_CHOWN@ 242_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid) 243 _GL_ARG_NONNULL ((1))); 244# endif 245_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)); 246# endif 247_GL_CXXALIASWARN (chown); 248#elif defined GNULIB_POSIXCHECK 249# undef chown 250# if HAVE_RAW_DECL_CHOWN 251_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and " 252 "doesn't treat a uid or gid of -1 on some systems - " 253 "use gnulib module chown for portability"); 254# endif 255#endif 256 257 258#if @GNULIB_CLOSE@ 259# if @REPLACE_CLOSE@ 260/* Automatically included by modules that need a replacement for close. */ 261# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 262# undef close 263# define close rpl_close 264# endif 265_GL_FUNCDECL_RPL (close, int, (int fd)); 266_GL_CXXALIAS_RPL (close, int, (int fd)); 267# else 268_GL_CXXALIAS_SYS (close, int, (int fd)); 269# endif 270_GL_CXXALIASWARN (close); 271#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ 272# undef close 273# define close close_used_without_requesting_gnulib_module_close 274#elif defined GNULIB_POSIXCHECK 275# undef close 276/* Assume close is always declared. */ 277_GL_WARN_ON_USE (close, "close does not portably work on sockets - " 278 "use gnulib module close for portability"); 279#endif 280 281 282#if @REPLACE_DUP@ 283# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 284# define dup rpl_dup 285# endif 286_GL_FUNCDECL_RPL (dup, int, (int oldfd)); 287_GL_CXXALIAS_RPL (dup, int, (int oldfd)); 288#else 289_GL_CXXALIAS_SYS (dup, int, (int oldfd)); 290#endif 291_GL_CXXALIASWARN (dup); 292 293 294#if @GNULIB_DUP2@ 295/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if 296 NEWFD = OLDFD, otherwise close NEWFD first if it is open. 297 Return newfd if successful, otherwise -1 and errno set. 298 See the POSIX:2001 specification 299 <http://www.opengroup.org/susv3xsh/dup2.html>. */ 300# if @REPLACE_DUP2@ 301# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 302# define dup2 rpl_dup2 303# endif 304_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); 305_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); 306# else 307# if !@HAVE_DUP2@ 308_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); 309# endif 310_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); 311# endif 312_GL_CXXALIASWARN (dup2); 313#elif defined GNULIB_POSIXCHECK 314# undef dup2 315# if HAVE_RAW_DECL_DUP2 316_GL_WARN_ON_USE (dup2, "dup2 is unportable - " 317 "use gnulib module dup2 for portability"); 318# endif 319#endif 320 321 322#if @GNULIB_DUP3@ 323/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the 324 specified flags. 325 The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) 326 and O_TEXT, O_BINARY (defined in "binary-io.h"). 327 Close NEWFD first if it is open. 328 Return newfd if successful, otherwise -1 and errno set. 329 See the Linux man page at 330 <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>. */ 331# if @HAVE_DUP3@ 332# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 333# define dup3 rpl_dup3 334# endif 335_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); 336_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); 337# else 338_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); 339_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); 340# endif 341_GL_CXXALIASWARN (dup3); 342#elif defined GNULIB_POSIXCHECK 343# undef dup3 344# if HAVE_RAW_DECL_DUP3 345_GL_WARN_ON_USE (dup3, "dup3 is unportable - " 346 "use gnulib module dup3 for portability"); 347# endif 348#endif 349 350 351#if @GNULIB_ENVIRON@ 352# if !@HAVE_DECL_ENVIRON@ 353/* Set of environment variables and values. An array of strings of the form 354 "VARIABLE=VALUE", terminated with a NULL. */ 355# if defined __APPLE__ && defined __MACH__ 356# include <crt_externs.h> 357# define environ (*_NSGetEnviron ()) 358# else 359# ifdef __cplusplus 360extern "C" { 361# endif 362extern char **environ; 363# ifdef __cplusplus 364} 365# endif 366# endif 367# endif 368#elif defined GNULIB_POSIXCHECK 369# if HAVE_RAW_DECL_ENVIRON 370static inline char *** 371rpl_environ (void) 372{ 373 return &environ; 374} 375_GL_WARN_ON_USE (rpl_environ, "environ is unportable - " 376 "use gnulib module environ for portability"); 377# undef environ 378# define environ (*rpl_environ ()) 379# endif 380#endif 381 382 383#if @GNULIB_EUIDACCESS@ 384/* Like access(), except that it uses the effective user id and group id of 385 the current process. */ 386# if !@HAVE_EUIDACCESS@ 387_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) 388 _GL_ARG_NONNULL ((1))); 389# endif 390_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); 391_GL_CXXALIASWARN (euidaccess); 392# if defined GNULIB_POSIXCHECK 393/* Like access(), this function is a security risk. */ 394_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " 395 "use the gnulib module faccessat instead"); 396# endif 397#elif defined GNULIB_POSIXCHECK 398# undef euidaccess 399# if HAVE_RAW_DECL_EUIDACCESS 400_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " 401 "use gnulib module euidaccess for portability"); 402# endif 403#endif 404 405 406#if @GNULIB_FACCESSAT@ 407# if !@HAVE_FACCESSAT@ 408_GL_FUNCDECL_SYS (faccessat, int, 409 (int fd, char const *file, int mode, int flag) 410 _GL_ARG_NONNULL ((2))); 411# endif 412_GL_CXXALIAS_SYS (faccessat, int, 413 (int fd, char const *file, int mode, int flag)); 414_GL_CXXALIASWARN (faccessat); 415#elif defined GNULIB_POSIXCHECK 416# undef faccessat 417# if HAVE_RAW_DECL_FACCESSAT 418_GL_WARN_ON_USE (faccessat, "faccessat is not portable - " 419 "use gnulib module faccessat for portability"); 420# endif 421#endif 422 423 424#if @GNULIB_FCHDIR@ 425/* Change the process' current working directory to the directory on which 426 the given file descriptor is open. 427 Return 0 if successful, otherwise -1 and errno set. 428 See the POSIX:2001 specification 429 <http://www.opengroup.org/susv3xsh/fchdir.html>. */ 430# if ! @HAVE_FCHDIR@ 431_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); 432 433/* Gnulib internal hooks needed to maintain the fchdir metadata. */ 434_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) 435 _GL_ARG_NONNULL ((2)); 436_GL_EXTERN_C void _gl_unregister_fd (int fd); 437_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); 438_GL_EXTERN_C const char *_gl_directory_name (int fd); 439 440# else 441# if !@HAVE_DECL_FCHDIR@ 442_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); 443# endif 444# endif 445_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); 446_GL_CXXALIASWARN (fchdir); 447#elif defined GNULIB_POSIXCHECK 448# undef fchdir 449# if HAVE_RAW_DECL_FCHDIR 450_GL_WARN_ON_USE (fchdir, "fchdir is unportable - " 451 "use gnulib module fchdir for portability"); 452# endif 453#endif 454 455 456#if @GNULIB_FCHOWNAT@ 457# if @REPLACE_FCHOWNAT@ 458# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 459# undef fchownat 460# define fchownat rpl_fchownat 461# endif 462_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, 463 uid_t owner, gid_t group, int flag) 464 _GL_ARG_NONNULL ((2))); 465_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, 466 uid_t owner, gid_t group, int flag)); 467# else 468# if !@HAVE_FCHOWNAT@ 469_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, 470 uid_t owner, gid_t group, int flag) 471 _GL_ARG_NONNULL ((2))); 472# endif 473_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, 474 uid_t owner, gid_t group, int flag)); 475# endif 476_GL_CXXALIASWARN (fchownat); 477#elif defined GNULIB_POSIXCHECK 478# undef fchownat 479# if HAVE_RAW_DECL_FCHOWNAT 480_GL_WARN_ON_USE (fchownat, "fchownat is not portable - " 481 "use gnulib module openat for portability"); 482# endif 483#endif 484 485 486#if @GNULIB_FSYNC@ 487/* Synchronize changes to a file. 488 Return 0 if successful, otherwise -1 and errno set. 489 See POSIX:2001 specification 490 <http://www.opengroup.org/susv3xsh/fsync.html>. */ 491# if !@HAVE_FSYNC@ 492_GL_FUNCDECL_SYS (fsync, int, (int fd)); 493# endif 494_GL_CXXALIAS_SYS (fsync, int, (int fd)); 495_GL_CXXALIASWARN (fsync); 496#elif defined GNULIB_POSIXCHECK 497# undef fsync 498# if HAVE_RAW_DECL_FSYNC 499_GL_WARN_ON_USE (fsync, "fsync is unportable - " 500 "use gnulib module fsync for portability"); 501# endif 502#endif 503 504 505#if @GNULIB_FTRUNCATE@ 506/* Change the size of the file to which FD is opened to become equal to LENGTH. 507 Return 0 if successful, otherwise -1 and errno set. 508 See the POSIX:2001 specification 509 <http://www.opengroup.org/susv3xsh/ftruncate.html>. */ 510# if !@HAVE_FTRUNCATE@ 511_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); 512# endif 513_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); 514_GL_CXXALIASWARN (ftruncate); 515#elif defined GNULIB_POSIXCHECK 516# undef ftruncate 517# if HAVE_RAW_DECL_FTRUNCATE 518_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " 519 "use gnulib module ftruncate for portability"); 520# endif 521#endif 522 523 524#if @GNULIB_GETCWD@ 525/* Get the name of the current working directory, and put it in SIZE bytes 526 of BUF. 527 Return BUF if successful, or NULL if the directory couldn't be determined 528 or SIZE was too small. 529 See the POSIX:2001 specification 530 <http://www.opengroup.org/susv3xsh/getcwd.html>. 531 Additionally, the gnulib module 'getcwd' guarantees the following GNU 532 extension: If BUF is NULL, an array is allocated with 'malloc'; the array 533 is SIZE bytes long, unless SIZE == 0, in which case it is as big as 534 necessary. */ 535# if @REPLACE_GETCWD@ 536# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 537# define getcwd rpl_getcwd 538# endif 539_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); 540_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); 541# else 542/* Need to cast, because on mingw, the second parameter is 543 int size. */ 544_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); 545# endif 546_GL_CXXALIASWARN (getcwd); 547#elif defined GNULIB_POSIXCHECK 548# undef getcwd 549# if HAVE_RAW_DECL_GETCWD 550_GL_WARN_ON_USE (getcwd, "getcwd is unportable - " 551 "use gnulib module getcwd for portability"); 552# endif 553#endif 554 555 556#if @GNULIB_GETDOMAINNAME@ 557/* Return the NIS domain name of the machine. 558 WARNING! The NIS domain name is unrelated to the fully qualified host name 559 of the machine. It is also unrelated to email addresses. 560 WARNING! The NIS domain name is usually the empty string or "(none)" when 561 not using NIS. 562 563 Put up to LEN bytes of the NIS domain name into NAME. 564 Null terminate it if the name is shorter than LEN. 565 If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. 566 Return 0 if successful, otherwise set errno and return -1. */ 567# if @REPLACE_GETDOMAINNAME@ 568# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 569# undef getdomainname 570# define getdomainname rpl_getdomainname 571# endif 572_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) 573 _GL_ARG_NONNULL ((1))); 574_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); 575# else 576# if !@HAVE_DECL_GETDOMAINNAME@ 577_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) 578 _GL_ARG_NONNULL ((1))); 579# endif 580_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); 581# endif 582_GL_CXXALIASWARN (getdomainname); 583#elif defined GNULIB_POSIXCHECK 584# undef getdomainname 585# if HAVE_RAW_DECL_GETDOMAINNAME 586_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " 587 "use gnulib module getdomainname for portability"); 588# endif 589#endif 590 591 592#if @GNULIB_GETDTABLESIZE@ 593/* Return the maximum number of file descriptors in the current process. 594 In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ 595# if !@HAVE_GETDTABLESIZE@ 596_GL_FUNCDECL_SYS (getdtablesize, int, (void)); 597# endif 598_GL_CXXALIAS_SYS (getdtablesize, int, (void)); 599_GL_CXXALIASWARN (getdtablesize); 600#elif defined GNULIB_POSIXCHECK 601# undef getdtablesize 602# if HAVE_RAW_DECL_GETDTABLESIZE 603_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " 604 "use gnulib module getdtablesize for portability"); 605# endif 606#endif 607 608 609#if @GNULIB_GETGROUPS@ 610/* Return the supplemental groups that the current process belongs to. 611 It is unspecified whether the effective group id is in the list. 612 If N is 0, return the group count; otherwise, N describes how many 613 entries are available in GROUPS. Return -1 and set errno if N is 614 not 0 and not large enough. Fails with ENOSYS on some systems. */ 615# if @REPLACE_GETGROUPS@ 616# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 617# undef getgroups 618# define getgroups rpl_getgroups 619# endif 620_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); 621_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); 622# else 623# if !@HAVE_GETGROUPS@ 624_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); 625# endif 626_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); 627# endif 628_GL_CXXALIASWARN (getgroups); 629#elif defined GNULIB_POSIXCHECK 630# undef getgroups 631# if HAVE_RAW_DECL_GETGROUPS 632_GL_WARN_ON_USE (getgroups, "getgroups is unportable - " 633 "use gnulib module getgroups for portability"); 634# endif 635#endif 636 637 638#if @GNULIB_GETHOSTNAME@ 639/* Return the standard host name of the machine. 640 WARNING! The host name may or may not be fully qualified. 641 642 Put up to LEN bytes of the host name into NAME. 643 Null terminate it if the name is shorter than LEN. 644 If the host name is longer than LEN, set errno = EINVAL and return -1. 645 Return 0 if successful, otherwise set errno and return -1. */ 646# if @UNISTD_H_HAVE_WINSOCK2_H@ 647# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 648# undef gethostname 649# define gethostname rpl_gethostname 650# endif 651_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) 652 _GL_ARG_NONNULL ((1))); 653_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); 654# else 655# if !@HAVE_GETHOSTNAME@ 656_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) 657 _GL_ARG_NONNULL ((1))); 658# endif 659/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second 660 parameter is 661 int len. */ 662_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); 663# endif 664_GL_CXXALIASWARN (gethostname); 665#elif @UNISTD_H_HAVE_WINSOCK2_H@ 666# undef gethostname 667# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname 668#elif defined GNULIB_POSIXCHECK 669# undef gethostname 670# if HAVE_RAW_DECL_GETHOSTNAME 671_GL_WARN_ON_USE (gethostname, "gethostname is unportable - " 672 "use gnulib module gethostname for portability"); 673# endif 674#endif 675 676 677#if @GNULIB_GETLOGIN@ 678/* Returns the user's login name, or NULL if it cannot be found. Upon error, 679 returns NULL with errno set. 680 681 See <http://www.opengroup.org/susv3xsh/getlogin.html>. 682 683 Most programs don't need to use this function, because the information is 684 available through environment variables: 685 ${LOGNAME-$USER} on Unix platforms, 686 $USERNAME on native Windows platforms. 687 */ 688# if !@HAVE_GETLOGIN@ 689_GL_FUNCDECL_SYS (getlogin, char *, (void)); 690# endif 691_GL_CXXALIAS_SYS (getlogin, char *, (void)); 692_GL_CXXALIASWARN (getlogin); 693#elif defined GNULIB_POSIXCHECK 694# undef getlogin 695# if HAVE_RAW_DECL_GETLOGIN 696_GL_WARN_ON_USE (getlogin, "getlogin is unportable - " 697 "use gnulib module getlogin for portability"); 698# endif 699#endif 700 701 702#if @GNULIB_GETLOGIN_R@ 703/* Copies the user's login name to NAME. 704 The array pointed to by NAME has room for SIZE bytes. 705 706 Returns 0 if successful. Upon error, an error number is returned, or -1 in 707 the case that the login name cannot be found but no specific error is 708 provided (this case is hopefully rare but is left open by the POSIX spec). 709 710 See <http://www.opengroup.org/susv3xsh/getlogin.html>. 711 712 Most programs don't need to use this function, because the information is 713 available through environment variables: 714 ${LOGNAME-$USER} on Unix platforms, 715 $USERNAME on native Windows platforms. 716 */ 717# if @REPLACE_GETLOGIN_R@ 718# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 719# define getlogin_r rpl_getlogin_r 720# endif 721_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) 722 _GL_ARG_NONNULL ((1))); 723_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); 724# else 725# if !@HAVE_DECL_GETLOGIN_R@ 726_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) 727 _GL_ARG_NONNULL ((1))); 728# endif 729/* Need to cast, because on Solaris 10 systems, the second argument is 730 int size. */ 731_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); 732# endif 733_GL_CXXALIASWARN (getlogin_r); 734#elif defined GNULIB_POSIXCHECK 735# undef getlogin_r 736# if HAVE_RAW_DECL_GETLOGIN_R 737_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " 738 "use gnulib module getlogin_r for portability"); 739# endif 740#endif 741 742 743#if @GNULIB_GETPAGESIZE@ 744# if @REPLACE_GETPAGESIZE@ 745# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 746# define getpagesize rpl_getpagesize 747# endif 748_GL_FUNCDECL_RPL (getpagesize, int, (void)); 749_GL_CXXALIAS_RPL (getpagesize, int, (void)); 750# else 751# if !@HAVE_GETPAGESIZE@ 752# if !defined getpagesize 753/* This is for POSIX systems. */ 754# if !defined _gl_getpagesize && defined _SC_PAGESIZE 755# if ! (defined __VMS && __VMS_VER < 70000000) 756# define _gl_getpagesize() sysconf (_SC_PAGESIZE) 757# endif 758# endif 759/* This is for older VMS. */ 760# if !defined _gl_getpagesize && defined __VMS 761# ifdef __ALPHA 762# define _gl_getpagesize() 8192 763# else 764# define _gl_getpagesize() 512 765# endif 766# endif 767/* This is for BeOS. */ 768# if !defined _gl_getpagesize && @HAVE_OS_H@ 769# include <OS.h> 770# if defined B_PAGE_SIZE 771# define _gl_getpagesize() B_PAGE_SIZE 772# endif 773# endif 774/* This is for AmigaOS4.0. */ 775# if !defined _gl_getpagesize && defined __amigaos4__ 776# define _gl_getpagesize() 2048 777# endif 778/* This is for older Unix systems. */ 779# if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ 780# include <sys/param.h> 781# ifdef EXEC_PAGESIZE 782# define _gl_getpagesize() EXEC_PAGESIZE 783# else 784# ifdef NBPG 785# ifndef CLSIZE 786# define CLSIZE 1 787# endif 788# define _gl_getpagesize() (NBPG * CLSIZE) 789# else 790# ifdef NBPC 791# define _gl_getpagesize() NBPC 792# endif 793# endif 794# endif 795# endif 796# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 797# define getpagesize() _gl_getpagesize () 798# else 799# if !GNULIB_defined_getpagesize_function 800static inline int 801getpagesize () 802{ 803 return _gl_getpagesize (); 804} 805# define GNULIB_defined_getpagesize_function 1 806# endif 807# endif 808# endif 809# endif 810/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ 811_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); 812# endif 813# if @HAVE_DECL_GETPAGESIZE@ 814_GL_CXXALIASWARN (getpagesize); 815# endif 816#elif defined GNULIB_POSIXCHECK 817# undef getpagesize 818# if HAVE_RAW_DECL_GETPAGESIZE 819_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " 820 "use gnulib module getpagesize for portability"); 821# endif 822#endif 823 824 825#if @GNULIB_GETUSERSHELL@ 826/* Return the next valid login shell on the system, or NULL when the end of 827 the list has been reached. */ 828# if !@HAVE_DECL_GETUSERSHELL@ 829_GL_FUNCDECL_SYS (getusershell, char *, (void)); 830# endif 831_GL_CXXALIAS_SYS (getusershell, char *, (void)); 832_GL_CXXALIASWARN (getusershell); 833#elif defined GNULIB_POSIXCHECK 834# undef getusershell 835# if HAVE_RAW_DECL_GETUSERSHELL 836_GL_WARN_ON_USE (getusershell, "getusershell is unportable - " 837 "use gnulib module getusershell for portability"); 838# endif 839#endif 840 841#if @GNULIB_GETUSERSHELL@ 842/* Rewind to pointer that is advanced at each getusershell() call. */ 843# if !@HAVE_DECL_GETUSERSHELL@ 844_GL_FUNCDECL_SYS (setusershell, void, (void)); 845# endif 846_GL_CXXALIAS_SYS (setusershell, void, (void)); 847_GL_CXXALIASWARN (setusershell); 848#elif defined GNULIB_POSIXCHECK 849# undef setusershell 850# if HAVE_RAW_DECL_SETUSERSHELL 851_GL_WARN_ON_USE (setusershell, "setusershell is unportable - " 852 "use gnulib module getusershell for portability"); 853# endif 854#endif 855 856#if @GNULIB_GETUSERSHELL@ 857/* Free the pointer that is advanced at each getusershell() call and 858 associated resources. */ 859# if !@HAVE_DECL_GETUSERSHELL@ 860_GL_FUNCDECL_SYS (endusershell, void, (void)); 861# endif 862_GL_CXXALIAS_SYS (endusershell, void, (void)); 863_GL_CXXALIASWARN (endusershell); 864#elif defined GNULIB_POSIXCHECK 865# undef endusershell 866# if HAVE_RAW_DECL_ENDUSERSHELL 867_GL_WARN_ON_USE (endusershell, "endusershell is unportable - " 868 "use gnulib module getusershell for portability"); 869# endif 870#endif 871 872 873#if @GNULIB_GROUP_MEMBER@ 874/* Determine whether group id is in calling user's group list. */ 875# if !@HAVE_GROUP_MEMBER@ 876_GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); 877# endif 878_GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); 879_GL_CXXALIASWARN (group_member); 880#elif defined GNULIB_POSIXCHECK 881# undef group_member 882# if HAVE_RAW_DECL_GROUP_MEMBER 883_GL_WARN_ON_USE (group_member, "group_member is unportable - " 884 "use gnulib module group-member for portability"); 885# endif 886#endif 887 888 889#if @GNULIB_LCHOWN@ 890/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE 891 to GID (if GID is not -1). Do not follow symbolic links. 892 Return 0 if successful, otherwise -1 and errno set. 893 See the POSIX:2001 specification 894 <http://www.opengroup.org/susv3xsh/lchown.html>. */ 895# if @REPLACE_LCHOWN@ 896# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 897# undef lchown 898# define lchown rpl_lchown 899# endif 900_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) 901 _GL_ARG_NONNULL ((1))); 902_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); 903# else 904# if !@HAVE_LCHOWN@ 905_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) 906 _GL_ARG_NONNULL ((1))); 907# endif 908_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); 909# endif 910_GL_CXXALIASWARN (lchown); 911#elif defined GNULIB_POSIXCHECK 912# undef lchown 913# if HAVE_RAW_DECL_LCHOWN 914_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " 915 "use gnulib module lchown for portability"); 916# endif 917#endif 918 919 920#if @GNULIB_LINK@ 921/* Create a new hard link for an existing file. 922 Return 0 if successful, otherwise -1 and errno set. 923 See POSIX:2001 specification 924 <http://www.opengroup.org/susv3xsh/link.html>. */ 925# if @REPLACE_LINK@ 926# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 927# define link rpl_link 928# endif 929_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) 930 _GL_ARG_NONNULL ((1, 2))); 931_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); 932# else 933# if !@HAVE_LINK@ 934_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) 935 _GL_ARG_NONNULL ((1, 2))); 936# endif 937_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); 938# endif 939_GL_CXXALIASWARN (link); 940#elif defined GNULIB_POSIXCHECK 941# undef link 942# if HAVE_RAW_DECL_LINK 943_GL_WARN_ON_USE (link, "link is unportable - " 944 "use gnulib module link for portability"); 945# endif 946#endif 947 948 949#if @GNULIB_LINKAT@ 950/* Create a new hard link for an existing file, relative to two 951 directories. FLAG controls whether symlinks are followed. 952 Return 0 if successful, otherwise -1 and errno set. */ 953# if @REPLACE_LINKAT@ 954# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 955# undef linkat 956# define linkat rpl_linkat 957# endif 958_GL_FUNCDECL_RPL (linkat, int, 959 (int fd1, const char *path1, int fd2, const char *path2, 960 int flag) 961 _GL_ARG_NONNULL ((2, 4))); 962_GL_CXXALIAS_RPL (linkat, int, 963 (int fd1, const char *path1, int fd2, const char *path2, 964 int flag)); 965# else 966# if !@HAVE_LINKAT@ 967_GL_FUNCDECL_SYS (linkat, int, 968 (int fd1, const char *path1, int fd2, const char *path2, 969 int flag) 970 _GL_ARG_NONNULL ((2, 4))); 971# endif 972_GL_CXXALIAS_SYS (linkat, int, 973 (int fd1, const char *path1, int fd2, const char *path2, 974 int flag)); 975# endif 976_GL_CXXALIASWARN (linkat); 977#elif defined GNULIB_POSIXCHECK 978# undef linkat 979# if HAVE_RAW_DECL_LINKAT 980_GL_WARN_ON_USE (linkat, "linkat is unportable - " 981 "use gnulib module linkat for portability"); 982# endif 983#endif 984 985 986#if @GNULIB_LSEEK@ 987/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. 988 Return the new offset if successful, otherwise -1 and errno set. 989 See the POSIX:2001 specification 990 <http://www.opengroup.org/susv3xsh/lseek.html>. */ 991# if @REPLACE_LSEEK@ 992# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 993# define lseek rpl_lseek 994# endif 995_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); 996_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); 997# else 998_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); 999# endif 1000_GL_CXXALIASWARN (lseek); 1001#elif defined GNULIB_POSIXCHECK 1002# undef lseek 1003# if HAVE_RAW_DECL_LSEEK 1004_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " 1005 "systems - use gnulib module lseek for portability"); 1006# endif 1007#endif 1008 1009 1010#if @GNULIB_PIPE@ 1011/* Create a pipe, defaulting to O_BINARY mode. 1012 Store the read-end as fd[0] and the write-end as fd[1]. 1013 Return 0 upon success, or -1 with errno set upon failure. */ 1014# if !@HAVE_PIPE@ 1015_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); 1016# endif 1017_GL_CXXALIAS_SYS (pipe, int, (int fd[2])); 1018_GL_CXXALIASWARN (pipe); 1019#elif defined GNULIB_POSIXCHECK 1020# undef pipe 1021# if HAVE_RAW_DECL_PIPE 1022_GL_WARN_ON_USE (pipe, "pipe is unportable - " 1023 "use gnulib module pipe-posix for portability"); 1024# endif 1025#endif 1026 1027 1028#if @GNULIB_PIPE2@ 1029/* Create a pipe, applying the given flags when opening the read-end of the 1030 pipe and the write-end of the pipe. 1031 The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) 1032 and O_TEXT, O_BINARY (defined in "binary-io.h"). 1033 Store the read-end as fd[0] and the write-end as fd[1]. 1034 Return 0 upon success, or -1 with errno set upon failure. 1035 See also the Linux man page at 1036 <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */ 1037# if @HAVE_PIPE2@ 1038# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1039# define pipe2 rpl_pipe2 1040# endif 1041_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); 1042_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); 1043# else 1044_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); 1045_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); 1046# endif 1047_GL_CXXALIASWARN (pipe2); 1048#elif defined GNULIB_POSIXCHECK 1049# undef pipe2 1050# if HAVE_RAW_DECL_PIPE2 1051_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " 1052 "use gnulib module pipe2 for portability"); 1053# endif 1054#endif 1055 1056 1057#if @GNULIB_PREAD@ 1058/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. 1059 Return the number of bytes placed into BUF if successful, otherwise 1060 set errno and return -1. 0 indicates EOF. See the POSIX:2001 1061 specification <http://www.opengroup.org/susv3xsh/pread.html>. */ 1062# if @REPLACE_PREAD@ 1063# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1064# undef pread 1065# define pread rpl_pread 1066# endif 1067_GL_FUNCDECL_RPL (pread, ssize_t, 1068 (int fd, void *buf, size_t bufsize, off_t offset) 1069 _GL_ARG_NONNULL ((2))); 1070_GL_CXXALIAS_RPL (pread, ssize_t, 1071 (int fd, void *buf, size_t bufsize, off_t offset)); 1072# else 1073# if !@HAVE_PREAD@ 1074_GL_FUNCDECL_SYS (pread, ssize_t, 1075 (int fd, void *buf, size_t bufsize, off_t offset) 1076 _GL_ARG_NONNULL ((2))); 1077# endif 1078_GL_CXXALIAS_SYS (pread, ssize_t, 1079 (int fd, void *buf, size_t bufsize, off_t offset)); 1080# endif 1081_GL_CXXALIASWARN (pread); 1082#elif defined GNULIB_POSIXCHECK 1083# undef pread 1084# if HAVE_RAW_DECL_PREAD 1085_GL_WARN_ON_USE (pread, "pread is unportable - " 1086 "use gnulib module pread for portability"); 1087# endif 1088#endif 1089 1090 1091#if @GNULIB_PWRITE@ 1092/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. 1093 Return the number of bytes written if successful, otherwise 1094 set errno and return -1. 0 indicates nothing written. See the 1095 POSIX:2001 specification 1096 <http://www.opengroup.org/susv3xsh/pwrite.html>. */ 1097# if @REPLACE_PWRITE@ 1098# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1099# undef pwrite 1100# define pwrite rpl_pwrite 1101# endif 1102_GL_FUNCDECL_RPL (pwrite, ssize_t, 1103 (int fd, const void *buf, size_t bufsize, off_t offset) 1104 _GL_ARG_NONNULL ((2))); 1105_GL_CXXALIAS_RPL (pwrite, ssize_t, 1106 (int fd, const void *buf, size_t bufsize, off_t offset)); 1107# else 1108# if !@HAVE_PWRITE@ 1109_GL_FUNCDECL_SYS (pwrite, ssize_t, 1110 (int fd, const void *buf, size_t bufsize, off_t offset) 1111 _GL_ARG_NONNULL ((2))); 1112# endif 1113_GL_CXXALIAS_SYS (pwrite, ssize_t, 1114 (int fd, const void *buf, size_t bufsize, off_t offset)); 1115# endif 1116_GL_CXXALIASWARN (pwrite); 1117#elif defined GNULIB_POSIXCHECK 1118# undef pwrite 1119# if HAVE_RAW_DECL_PWRITE 1120_GL_WARN_ON_USE (pwrite, "pwrite is unportable - " 1121 "use gnulib module pwrite for portability"); 1122# endif 1123#endif 1124 1125 1126#if @GNULIB_READ@ 1127/* Read up to COUNT bytes from file descriptor FD into the buffer starting 1128 at BUF. See the POSIX:2001 specification 1129 <http://www.opengroup.org/susv3xsh/read.html>. */ 1130# if @REPLACE_READ@ && @GNULIB_UNISTD_H_NONBLOCKING@ 1131# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1132# undef read 1133# define read rpl_read 1134# endif 1135_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) 1136 _GL_ARG_NONNULL ((2))); 1137_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); 1138# else 1139/* Need to cast, because on mingw, the third parameter is 1140 unsigned int count 1141 and the return type is 'int'. */ 1142_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); 1143# endif 1144_GL_CXXALIASWARN (read); 1145#endif 1146 1147 1148#if @GNULIB_READLINK@ 1149/* Read the contents of the symbolic link FILE and place the first BUFSIZE 1150 bytes of it into BUF. Return the number of bytes placed into BUF if 1151 successful, otherwise -1 and errno set. 1152 See the POSIX:2001 specification 1153 <http://www.opengroup.org/susv3xsh/readlink.html>. */ 1154# if @REPLACE_READLINK@ 1155# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1156# define readlink rpl_readlink 1157# endif 1158_GL_FUNCDECL_RPL (readlink, ssize_t, 1159 (const char *file, char *buf, size_t bufsize) 1160 _GL_ARG_NONNULL ((1, 2))); 1161_GL_CXXALIAS_RPL (readlink, ssize_t, 1162 (const char *file, char *buf, size_t bufsize)); 1163# else 1164# if !@HAVE_READLINK@ 1165_GL_FUNCDECL_SYS (readlink, ssize_t, 1166 (const char *file, char *buf, size_t bufsize) 1167 _GL_ARG_NONNULL ((1, 2))); 1168# endif 1169_GL_CXXALIAS_SYS (readlink, ssize_t, 1170 (const char *file, char *buf, size_t bufsize)); 1171# endif 1172_GL_CXXALIASWARN (readlink); 1173#elif defined GNULIB_POSIXCHECK 1174# undef readlink 1175# if HAVE_RAW_DECL_READLINK 1176_GL_WARN_ON_USE (readlink, "readlink is unportable - " 1177 "use gnulib module readlink for portability"); 1178# endif 1179#endif 1180 1181 1182#if @GNULIB_READLINKAT@ 1183# if !@HAVE_READLINKAT@ 1184_GL_FUNCDECL_SYS (readlinkat, ssize_t, 1185 (int fd, char const *file, char *buf, size_t len) 1186 _GL_ARG_NONNULL ((2, 3))); 1187# endif 1188_GL_CXXALIAS_SYS (readlinkat, ssize_t, 1189 (int fd, char const *file, char *buf, size_t len)); 1190_GL_CXXALIASWARN (readlinkat); 1191#elif defined GNULIB_POSIXCHECK 1192# undef readlinkat 1193# if HAVE_RAW_DECL_READLINKAT 1194_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " 1195 "use gnulib module readlinkat for portability"); 1196# endif 1197#endif 1198 1199 1200#if @GNULIB_RMDIR@ 1201/* Remove the directory DIR. */ 1202# if @REPLACE_RMDIR@ 1203# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1204# define rmdir rpl_rmdir 1205# endif 1206_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); 1207_GL_CXXALIAS_RPL (rmdir, int, (char const *name)); 1208# else 1209_GL_CXXALIAS_SYS (rmdir, int, (char const *name)); 1210# endif 1211_GL_CXXALIASWARN (rmdir); 1212#elif defined GNULIB_POSIXCHECK 1213# undef rmdir 1214# if HAVE_RAW_DECL_RMDIR 1215_GL_WARN_ON_USE (rmdir, "rmdir is unportable - " 1216 "use gnulib module rmdir for portability"); 1217# endif 1218#endif 1219 1220 1221#if @GNULIB_SLEEP@ 1222/* Pause the execution of the current thread for N seconds. 1223 Returns the number of seconds left to sleep. 1224 See the POSIX:2001 specification 1225 <http://www.opengroup.org/susv3xsh/sleep.html>. */ 1226# if @REPLACE_SLEEP@ 1227# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1228# undef sleep 1229# define sleep rpl_sleep 1230# endif 1231_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); 1232_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); 1233# else 1234# if !@HAVE_SLEEP@ 1235_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); 1236# endif 1237_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); 1238# endif 1239_GL_CXXALIASWARN (sleep); 1240#elif defined GNULIB_POSIXCHECK 1241# undef sleep 1242# if HAVE_RAW_DECL_SLEEP 1243_GL_WARN_ON_USE (sleep, "sleep is unportable - " 1244 "use gnulib module sleep for portability"); 1245# endif 1246#endif 1247 1248 1249#if @GNULIB_SYMLINK@ 1250# if @REPLACE_SYMLINK@ 1251# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1252# undef symlink 1253# define symlink rpl_symlink 1254# endif 1255_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) 1256 _GL_ARG_NONNULL ((1, 2))); 1257_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); 1258# else 1259# if !@HAVE_SYMLINK@ 1260_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) 1261 _GL_ARG_NONNULL ((1, 2))); 1262# endif 1263_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); 1264# endif 1265_GL_CXXALIASWARN (symlink); 1266#elif defined GNULIB_POSIXCHECK 1267# undef symlink 1268# if HAVE_RAW_DECL_SYMLINK 1269_GL_WARN_ON_USE (symlink, "symlink is not portable - " 1270 "use gnulib module symlink for portability"); 1271# endif 1272#endif 1273 1274 1275#if @GNULIB_SYMLINKAT@ 1276# if !@HAVE_SYMLINKAT@ 1277_GL_FUNCDECL_SYS (symlinkat, int, 1278 (char const *contents, int fd, char const *file) 1279 _GL_ARG_NONNULL ((1, 3))); 1280# endif 1281_GL_CXXALIAS_SYS (symlinkat, int, 1282 (char const *contents, int fd, char const *file)); 1283_GL_CXXALIASWARN (symlinkat); 1284#elif defined GNULIB_POSIXCHECK 1285# undef symlinkat 1286# if HAVE_RAW_DECL_SYMLINKAT 1287_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " 1288 "use gnulib module symlinkat for portability"); 1289# endif 1290#endif 1291 1292 1293#if @GNULIB_TTYNAME_R@ 1294/* Store at most BUFLEN characters of the pathname of the terminal FD is 1295 open on in BUF. Return 0 on success, otherwise an error number. */ 1296# if @REPLACE_TTYNAME_R@ 1297# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1298# undef ttyname_r 1299# define ttyname_r rpl_ttyname_r 1300# endif 1301_GL_FUNCDECL_RPL (ttyname_r, int, 1302 (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); 1303_GL_CXXALIAS_RPL (ttyname_r, int, 1304 (int fd, char *buf, size_t buflen)); 1305# else 1306# if !@HAVE_DECL_TTYNAME_R@ 1307_GL_FUNCDECL_SYS (ttyname_r, int, 1308 (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); 1309# endif 1310_GL_CXXALIAS_SYS (ttyname_r, int, 1311 (int fd, char *buf, size_t buflen)); 1312# endif 1313_GL_CXXALIASWARN (ttyname_r); 1314#elif defined GNULIB_POSIXCHECK 1315# undef ttyname_r 1316# if HAVE_RAW_DECL_TTYNAME_R 1317_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " 1318 "use gnulib module ttyname_r for portability"); 1319# endif 1320#endif 1321 1322 1323#if @GNULIB_UNLINK@ 1324# if @REPLACE_UNLINK@ 1325# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1326# undef unlink 1327# define unlink rpl_unlink 1328# endif 1329_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); 1330_GL_CXXALIAS_RPL (unlink, int, (char const *file)); 1331# else 1332_GL_CXXALIAS_SYS (unlink, int, (char const *file)); 1333# endif 1334_GL_CXXALIASWARN (unlink); 1335#elif defined GNULIB_POSIXCHECK 1336# undef unlink 1337# if HAVE_RAW_DECL_UNLINK 1338_GL_WARN_ON_USE (unlink, "unlink is not portable - " 1339 "use gnulib module unlink for portability"); 1340# endif 1341#endif 1342 1343 1344#if @GNULIB_UNLINKAT@ 1345# if @REPLACE_UNLINKAT@ 1346# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1347# undef unlinkat 1348# define unlinkat rpl_unlinkat 1349# endif 1350_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) 1351 _GL_ARG_NONNULL ((2))); 1352_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); 1353# else 1354# if !@HAVE_UNLINKAT@ 1355_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) 1356 _GL_ARG_NONNULL ((2))); 1357# endif 1358_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); 1359# endif 1360_GL_CXXALIASWARN (unlinkat); 1361#elif defined GNULIB_POSIXCHECK 1362# undef unlinkat 1363# if HAVE_RAW_DECL_UNLINKAT 1364_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " 1365 "use gnulib module openat for portability"); 1366# endif 1367#endif 1368 1369 1370#if @GNULIB_USLEEP@ 1371/* Pause the execution of the current thread for N microseconds. 1372 Returns 0 on completion, or -1 on range error. 1373 See the POSIX:2001 specification 1374 <http://www.opengroup.org/susv3xsh/sleep.html>. */ 1375# if @REPLACE_USLEEP@ 1376# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1377# undef usleep 1378# define usleep rpl_usleep 1379# endif 1380_GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); 1381_GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); 1382# else 1383# if !@HAVE_USLEEP@ 1384_GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); 1385# endif 1386_GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); 1387# endif 1388_GL_CXXALIASWARN (usleep); 1389#elif defined GNULIB_POSIXCHECK 1390# undef usleep 1391# if HAVE_RAW_DECL_USLEEP 1392_GL_WARN_ON_USE (usleep, "usleep is unportable - " 1393 "use gnulib module usleep for portability"); 1394# endif 1395#endif 1396 1397 1398#if @GNULIB_WRITE@ 1399/* Write up to COUNT bytes starting at BUF to file descriptor FD. 1400 See the POSIX:2001 specification 1401 <http://www.opengroup.org/susv3xsh/write.html>. */ 1402# if @REPLACE_WRITE@ && (@GNULIB_UNISTD_H_NONBLOCKING@ || @GNULIB_UNISTD_H_SIGPIPE@) 1403# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1404# undef write 1405# define write rpl_write 1406# endif 1407_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) 1408 _GL_ARG_NONNULL ((2))); 1409_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); 1410# else 1411/* Need to cast, because on mingw, the third parameter is 1412 unsigned int count 1413 and the return type is 'int'. */ 1414_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); 1415# endif 1416_GL_CXXALIASWARN (write); 1417#endif 1418 1419 1420#endif /* _@GUARD_PREFIX@_UNISTD_H */ 1421#endif /* _@GUARD_PREFIX@_UNISTD_H */ 1422