File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / unistd.in.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 09:29:43 2012 UTC (12 years, 1 month ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_14p0, v1_14, HEAD
libiconv v1.14

    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
  360: extern "C" {
  361: #   endif
  362: extern char **environ;
  363: #   ifdef __cplusplus
  364: }
  365: #   endif
  366: #  endif
  367: # endif
  368: #elif defined GNULIB_POSIXCHECK
  369: # if HAVE_RAW_DECL_ENVIRON
  370: static inline char ***
  371: rpl_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
  800: static inline int
  801: getpagesize ()
  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 */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>