Blame gnulib-tests/sys_select.in.h

Packit Service fdd496
/* Substitute for <sys/select.h>.
Packit Service fdd496
   Copyright (C) 2007-2017 Free Software Foundation, Inc.
Packit Service fdd496
Packit Service fdd496
   This program is free software; you can redistribute it and/or modify
Packit Service fdd496
   it under the terms of the GNU General Public License as published by
Packit Service fdd496
   the Free Software Foundation; either version 3, or (at your option)
Packit Service fdd496
   any later version.
Packit Service fdd496
Packit Service fdd496
   This program is distributed in the hope that it will be useful,
Packit Service fdd496
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fdd496
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service fdd496
   GNU General Public License for more details.
Packit Service fdd496
Packit Service fdd496
   You should have received a copy of the GNU General Public License
Packit Service fdd496
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit Service fdd496
Packit Service fdd496
# if __GNUC__ >= 3
Packit Service fdd496
@PRAGMA_SYSTEM_HEADER@
Packit Service fdd496
# endif
Packit Service fdd496
@PRAGMA_COLUMNS@
Packit Service fdd496
Packit Service fdd496
/* On OSF/1 and Solaris 2.6, <sys/types.h> and <sys/time.h>
Packit Service fdd496
   both include <sys/select.h>.
Packit Service fdd496
   On Cygwin, <sys/time.h> includes <sys/select.h>.
Packit Service fdd496
   Simply delegate to the system's header in this case.  */
Packit Service fdd496
#if (@HAVE_SYS_SELECT_H@                                                \
Packit Service fdd496
     && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TYPES_H             \
Packit Service fdd496
     && ((defined __osf__ && defined _SYS_TYPES_H_                      \
Packit Service fdd496
          && defined _OSF_SOURCE)                                       \
Packit Service fdd496
         || (defined __sun && defined _SYS_TYPES_H                      \
Packit Service fdd496
             && (! (defined _XOPEN_SOURCE || defined _POSIX_C_SOURCE)   \
Packit Service fdd496
                 || defined __EXTENSIONS__))))
Packit Service fdd496
Packit Service fdd496
# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TYPES_H
Packit Service fdd496
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@
Packit Service fdd496
Packit Service fdd496
#elif (@HAVE_SYS_SELECT_H@                                              \
Packit Service fdd496
       && (defined _CYGWIN_SYS_TIME_H                                   \
Packit Service fdd496
           || (!defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TIME_H       \
Packit Service fdd496
               && ((defined __osf__ && defined _SYS_TIME_H_             \
Packit Service fdd496
                    && defined _OSF_SOURCE)                             \
Packit Service fdd496
                   || (defined __sun && defined _SYS_TIME_H             \
Packit Service fdd496
                       && (! (defined _XOPEN_SOURCE                     \
Packit Service fdd496
                              || defined _POSIX_C_SOURCE)               \
Packit Service fdd496
                           || defined __EXTENSIONS__))))))
Packit Service fdd496
Packit Service fdd496
# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TIME_H
Packit Service fdd496
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@
Packit Service fdd496
Packit Service fdd496
/* On IRIX 6.5, <sys/timespec.h> includes <sys/types.h>, which includes
Packit Service fdd496
   <sys/bsd_types.h>, which includes <sys/select.h>.  At this point we cannot
Packit Service fdd496
   include <signal.h>, because that includes <internal/signal_core.h>, which
Packit Service fdd496
   gives a syntax error because <sys/timespec.h> has not been completely
Packit Service fdd496
   processed.  Simply delegate to the system's header in this case.  */
Packit Service fdd496
#elif @HAVE_SYS_SELECT_H@ && defined __sgi && (defined _SYS_BSD_TYPES_H && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_BSD_TYPES_H)
Packit Service fdd496
Packit Service fdd496
# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_BSD_TYPES_H
Packit Service fdd496
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@
Packit Service fdd496
Packit Service fdd496
/* On OpenBSD 5.0, <pthread.h> includes <sys/types.h>, which includes
Packit Service fdd496
   <sys/select.h>.  At this point we cannot include <signal.h>, because that
Packit Service fdd496
   includes gnulib's pthread.h override, which gives a syntax error because
Packit Service fdd496
   /usr/include/pthread.h has not been completely processed.  Simply delegate
Packit Service fdd496
   to the system's header in this case.  */
Packit Service fdd496
#elif @HAVE_SYS_SELECT_H@ && defined __OpenBSD__ && (defined _PTHREAD_H_ && !defined PTHREAD_MUTEX_INITIALIZER)
Packit Service fdd496
Packit Service fdd496
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@
Packit Service fdd496
Packit Service fdd496
#else
Packit Service fdd496
Packit Service fdd496
#ifndef _@GUARD_PREFIX@_SYS_SELECT_H
Packit Service fdd496
Packit Service fdd496
/* On many platforms, <sys/select.h> assumes prior inclusion of
Packit Service fdd496
   <sys/types.h>.  Also, mingw defines sigset_t there, instead of
Packit Service fdd496
   in <signal.h> where it belongs.  */
Packit Service fdd496
#include <sys/types.h>
Packit Service fdd496
Packit Service fdd496
#if @HAVE_SYS_SELECT_H@
Packit Service fdd496
Packit Service fdd496
/* On OSF/1 4.0, <sys/select.h> provides only a forward declaration
Packit Service fdd496
   of 'struct timeval', and no definition of this type.
Packit Service fdd496
   Also, Mac OS X, AIX, HP-UX, IRIX, Solaris, Interix declare select()
Packit Service fdd496
   in <sys/time.h>.
Packit Service fdd496
   But avoid namespace pollution on glibc systems and "unknown type
Packit Service fdd496
   name" problems on Cygwin.  */
Packit Service fdd496
# if !(defined __GLIBC__ || defined __CYGWIN__)
Packit Service fdd496
#  include <sys/time.h>
Packit Service fdd496
# endif
Packit Service fdd496
Packit Service fdd496
/* On AIX 7 and Solaris 10, <sys/select.h> provides an FD_ZERO implementation
Packit Service fdd496
   that relies on memset(), but without including <string.h>.
Packit Service fdd496
   But in any case avoid namespace pollution on glibc systems.  */
Packit Service fdd496
# if (defined __OpenBSD__ || defined _AIX || defined __sun || defined __osf__ || defined __BEOS__) \
Packit Service fdd496
     && ! defined __GLIBC__
Packit Service fdd496
#  include <string.h>
Packit Service fdd496
# endif
Packit Service fdd496
Packit Service fdd496
/* The include_next requires a split double-inclusion guard.  */
Packit Service fdd496
# @INCLUDE_NEXT@ @NEXT_SYS_SELECT_H@
Packit Service fdd496
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
/* Get definition of 'sigset_t'.
Packit Service fdd496
   But avoid namespace pollution on glibc systems and "unknown type
Packit Service fdd496
   name" problems on Cygwin.
Packit Service fdd496
   Do this after the include_next (for the sake of OpenBSD 5.0) but before
Packit Service fdd496
   the split double-inclusion guard (for the sake of Solaris).  */
Packit Service fdd496
#if !((defined __GLIBC__ || defined __CYGWIN__) && !defined __UCLIBC__)
Packit Service fdd496
# include <signal.h>
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
#ifndef _@GUARD_PREFIX@_SYS_SELECT_H
Packit Service fdd496
#define _@GUARD_PREFIX@_SYS_SELECT_H
Packit Service fdd496
Packit Service fdd496
#if !@HAVE_SYS_SELECT_H@
Packit Service fdd496
/* A platform that lacks <sys/select.h>.  */
Packit Service fdd496
/* Get the 'struct timeval' and 'fd_set' types and the FD_* macros
Packit Service fdd496
   on most platforms.  */
Packit Service fdd496
# include <sys/time.h>
Packit Service fdd496
/* On HP-UX 11, <sys/time.h> provides an FD_ZERO implementation
Packit Service fdd496
   that relies on memset(), but without including <string.h>.  */
Packit Service fdd496
# if defined __hpux
Packit Service fdd496
#  include <string.h>
Packit Service fdd496
# endif
Packit Service fdd496
/* On native Windows platforms:
Packit Service fdd496
   Get the 'fd_set' type.
Packit Service fdd496
   Get the close() declaration before we override it.  */
Packit Service fdd496
# if @HAVE_WINSOCK2_H@
Packit Service fdd496
#  if !defined _GL_INCLUDING_WINSOCK2_H
Packit Service fdd496
#   define _GL_INCLUDING_WINSOCK2_H
Packit Service fdd496
#   include <winsock2.h>
Packit Service fdd496
#   undef _GL_INCLUDING_WINSOCK2_H
Packit Service fdd496
#  endif
Packit Service fdd496
#  include <io.h>
Packit Service fdd496
# endif
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit Service fdd496
Packit Service fdd496
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit Service fdd496
Packit Service fdd496
Packit Service fdd496
/* Fix some definitions from <winsock2.h>.  */
Packit Service fdd496
Packit Service fdd496
#if @HAVE_WINSOCK2_H@
Packit Service fdd496
Packit Service fdd496
# if !GNULIB_defined_rpl_fd_isset
Packit Service fdd496
Packit Service fdd496
/* Re-define FD_ISSET to avoid a WSA call while we are not using
Packit Service fdd496
   network sockets.  */
Packit Service fdd496
static int
Packit Service fdd496
rpl_fd_isset (SOCKET fd, fd_set * set)
Packit Service fdd496
{
Packit Service fdd496
  u_int i;
Packit Service fdd496
  if (set == NULL)
Packit Service fdd496
    return 0;
Packit Service fdd496
Packit Service fdd496
  for (i = 0; i < set->fd_count; i++)
Packit Service fdd496
    if (set->fd_array[i] == fd)
Packit Service fdd496
      return 1;
Packit Service fdd496
Packit Service fdd496
  return 0;
Packit Service fdd496
}
Packit Service fdd496
Packit Service fdd496
#  define GNULIB_defined_rpl_fd_isset 1
Packit Service fdd496
# endif
Packit Service fdd496
Packit Service fdd496
# undef FD_ISSET
Packit Service fdd496
# define FD_ISSET(fd, set) rpl_fd_isset(fd, set)
Packit Service fdd496
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
/* Hide some function declarations from <winsock2.h>.  */
Packit Service fdd496
Packit Service fdd496
#if @HAVE_WINSOCK2_H@
Packit Service fdd496
# if !defined _@GUARD_PREFIX@_UNISTD_H
Packit Service fdd496
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit Service fdd496
#   undef close
Packit Service fdd496
#   define close close_used_without_including_unistd_h
Packit Service fdd496
#  else
Packit Service fdd496
    _GL_WARN_ON_USE (close,
Packit Service fdd496
                     "close() used without including <unistd.h>");
Packit Service fdd496
#  endif
Packit Service fdd496
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit Service fdd496
#   undef gethostname
Packit Service fdd496
#   define gethostname gethostname_used_without_including_unistd_h
Packit Service fdd496
#  else
Packit Service fdd496
    _GL_WARN_ON_USE (gethostname,
Packit Service fdd496
                     "gethostname() used without including <unistd.h>");
Packit Service fdd496
#  endif
Packit Service fdd496
# endif
Packit Service fdd496
# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
Packit Service fdd496
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit Service fdd496
#   undef socket
Packit Service fdd496
#   define socket              socket_used_without_including_sys_socket_h
Packit Service fdd496
#   undef connect
Packit Service fdd496
#   define connect             connect_used_without_including_sys_socket_h
Packit Service fdd496
#   undef accept
Packit Service fdd496
#   define accept              accept_used_without_including_sys_socket_h
Packit Service fdd496
#   undef bind
Packit Service fdd496
#   define bind                bind_used_without_including_sys_socket_h
Packit Service fdd496
#   undef getpeername
Packit Service fdd496
#   define getpeername         getpeername_used_without_including_sys_socket_h
Packit Service fdd496
#   undef getsockname
Packit Service fdd496
#   define getsockname         getsockname_used_without_including_sys_socket_h
Packit Service fdd496
#   undef getsockopt
Packit Service fdd496
#   define getsockopt          getsockopt_used_without_including_sys_socket_h
Packit Service fdd496
#   undef listen
Packit Service fdd496
#   define listen              listen_used_without_including_sys_socket_h
Packit Service fdd496
#   undef recv
Packit Service fdd496
#   define recv                recv_used_without_including_sys_socket_h
Packit Service fdd496
#   undef send
Packit Service fdd496
#   define send                send_used_without_including_sys_socket_h
Packit Service fdd496
#   undef recvfrom
Packit Service fdd496
#   define recvfrom            recvfrom_used_without_including_sys_socket_h
Packit Service fdd496
#   undef sendto
Packit Service fdd496
#   define sendto              sendto_used_without_including_sys_socket_h
Packit Service fdd496
#   undef setsockopt
Packit Service fdd496
#   define setsockopt          setsockopt_used_without_including_sys_socket_h
Packit Service fdd496
#   undef shutdown
Packit Service fdd496
#   define shutdown            shutdown_used_without_including_sys_socket_h
Packit Service fdd496
#  else
Packit Service fdd496
    _GL_WARN_ON_USE (socket,
Packit Service fdd496
                     "socket() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (connect,
Packit Service fdd496
                     "connect() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (accept,
Packit Service fdd496
                     "accept() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (bind,
Packit Service fdd496
                     "bind() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (getpeername,
Packit Service fdd496
                     "getpeername() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (getsockname,
Packit Service fdd496
                     "getsockname() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (getsockopt,
Packit Service fdd496
                     "getsockopt() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (listen,
Packit Service fdd496
                     "listen() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (recv,
Packit Service fdd496
                     "recv() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (send,
Packit Service fdd496
                     "send() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (recvfrom,
Packit Service fdd496
                     "recvfrom() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (sendto,
Packit Service fdd496
                     "sendto() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (setsockopt,
Packit Service fdd496
                     "setsockopt() used without including <sys/socket.h>");
Packit Service fdd496
    _GL_WARN_ON_USE (shutdown,
Packit Service fdd496
                     "shutdown() used without including <sys/socket.h>");
Packit Service fdd496
#  endif
Packit Service fdd496
# endif
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
Packit Service fdd496
#if @GNULIB_PSELECT@
Packit Service fdd496
# if @REPLACE_PSELECT@
Packit Service fdd496
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit Service fdd496
#   undef pselect
Packit Service fdd496
#   define pselect rpl_pselect
Packit Service fdd496
#  endif
Packit Service fdd496
_GL_FUNCDECL_RPL (pselect, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timespec const *restrict, const sigset_t *restrict));
Packit Service fdd496
_GL_CXXALIAS_RPL (pselect, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timespec const *restrict, const sigset_t *restrict));
Packit Service fdd496
# else
Packit Service fdd496
#  if !@HAVE_PSELECT@
Packit Service fdd496
_GL_FUNCDECL_SYS (pselect, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timespec const *restrict, const sigset_t *restrict));
Packit Service fdd496
#  endif
Packit Service fdd496
_GL_CXXALIAS_SYS (pselect, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timespec const *restrict, const sigset_t *restrict));
Packit Service fdd496
# endif
Packit Service fdd496
_GL_CXXALIASWARN (pselect);
Packit Service fdd496
#elif defined GNULIB_POSIXCHECK
Packit Service fdd496
# undef pselect
Packit Service fdd496
# if HAVE_RAW_DECL_PSELECT
Packit Service fdd496
_GL_WARN_ON_USE (pselect, "pselect is not portable - "
Packit Service fdd496
                 "use gnulib module pselect for portability");
Packit Service fdd496
# endif
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
#if @GNULIB_SELECT@
Packit Service fdd496
# if @REPLACE_SELECT@
Packit Service fdd496
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit Service fdd496
#   undef select
Packit Service fdd496
#   define select rpl_select
Packit Service fdd496
#  endif
Packit Service fdd496
_GL_FUNCDECL_RPL (select, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timeval *restrict));
Packit Service fdd496
_GL_CXXALIAS_RPL (select, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timeval *restrict));
Packit Service fdd496
# else
Packit Service fdd496
_GL_CXXALIAS_SYS (select, int,
Packit Service fdd496
                  (int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
Packit Service fdd496
                   struct timeval *restrict));
Packit Service fdd496
# endif
Packit Service fdd496
_GL_CXXALIASWARN (select);
Packit Service fdd496
#elif @HAVE_WINSOCK2_H@
Packit Service fdd496
# undef select
Packit Service fdd496
# define select select_used_without_requesting_gnulib_module_select
Packit Service fdd496
#elif defined GNULIB_POSIXCHECK
Packit Service fdd496
# undef select
Packit Service fdd496
# if HAVE_RAW_DECL_SELECT
Packit Service fdd496
_GL_WARN_ON_USE (select, "select is not always POSIX compliant - "
Packit Service fdd496
                 "use gnulib module select for portability");
Packit Service fdd496
# endif
Packit Service fdd496
#endif
Packit Service fdd496
Packit Service fdd496
Packit Service fdd496
#endif /* _@GUARD_PREFIX@_SYS_SELECT_H */
Packit Service fdd496
#endif /* _@GUARD_PREFIX@_SYS_SELECT_H */
Packit Service fdd496
#endif /* OSF/1 */