Blame gnulib-tests/sys_select.in.h

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