Home | History | Annotate | Line # | Download | only in import
sys_time.in.h revision 1.1.1.1
      1 /* Provide a more complete sys/time.h.
      2 
      3    Copyright (C) 2007-2020 Free Software Foundation, Inc.
      4 
      5    This program is free software; you can redistribute it and/or modify
      6    it under the terms of the GNU General Public License as published by
      7    the Free Software Foundation; either version 3, or (at your option)
      8    any later version.
      9 
     10    This program is distributed in the hope that it will be useful,
     11    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13    GNU General Public License for more details.
     14 
     15    You should have received a copy of the GNU General Public License
     16    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
     17 
     18 /* Written by Paul Eggert.  */
     19 
     20 #ifndef _@GUARD_PREFIX@_SYS_TIME_H
     21 
     22 #if __GNUC__ >= 3
     23 @PRAGMA_SYSTEM_HEADER@
     24 #endif
     25 @PRAGMA_COLUMNS@
     26 
     27 /* On Cygwin and on many BSDish systems, <sys/time.h> includes itself
     28    recursively via <sys/select.h>.
     29    Simply delegate to the system's header in this case; it is a no-op.
     30    Without this extra ifdef, the C++ gettimeofday declaration below
     31    would be a forward declaration in gnulib's nested <sys/time.h>.  */
     32 #if defined _CYGWIN_SYS_TIME_H || defined _SYS_TIME_H || defined _SYS_TIME_H_
     33 # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
     34 #else
     35 
     36 /* The include_next requires a split double-inclusion guard.  */
     37 #if @HAVE_SYS_TIME_H@
     38 # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
     39 #endif
     40 
     41 #ifndef _@GUARD_PREFIX@_SYS_TIME_H
     42 #define _@GUARD_PREFIX@_SYS_TIME_H
     43 
     44 #if ! @HAVE_SYS_TIME_H@
     45 # include <time.h>
     46 #endif
     47 
     48 /* On native Windows with MSVC, get the 'struct timeval' type.
     49    Also, on native Windows with a 64-bit time_t, where we are overriding the
     50    'struct timeval' type, get all declarations of system functions whose
     51    signature contains 'struct timeval'.  */
     52 #if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
     53 # define _GL_INCLUDING_WINSOCK2_H
     54 # include <winsock2.h>
     55 # undef _GL_INCLUDING_WINSOCK2_H
     56 #endif
     57 
     58 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
     59 
     60 /* The definition of _GL_ARG_NONNULL is copied here.  */
     61 
     62 /* The definition of _GL_WARN_ON_USE is copied here.  */
     63 
     64 #ifdef __cplusplus
     65 extern "C" {
     66 #endif
     67 
     68 #if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@
     69 
     70 # if @REPLACE_STRUCT_TIMEVAL@
     71 #  define timeval rpl_timeval
     72 # endif
     73 
     74 # if !GNULIB_defined_struct_timeval
     75 struct timeval
     76 {
     77   time_t tv_sec;
     78   long int tv_usec;
     79 };
     80 #  define GNULIB_defined_struct_timeval 1
     81 # endif
     82 
     83 #endif
     84 
     85 #ifdef __cplusplus
     86 }
     87 #endif
     88 
     89 #if @GNULIB_GETTIMEOFDAY@
     90 # if @REPLACE_GETTIMEOFDAY@
     91 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
     92 #   undef gettimeofday
     93 #   define gettimeofday rpl_gettimeofday
     94 #  endif
     95 _GL_FUNCDECL_RPL (gettimeofday, int,
     96                   (struct timeval *restrict, void *restrict)
     97                   _GL_ARG_NONNULL ((1)));
     98 _GL_CXXALIAS_RPL (gettimeofday, int,
     99                   (struct timeval *restrict, void *restrict));
    100 # else
    101 #  if !@HAVE_GETTIMEOFDAY@
    102 _GL_FUNCDECL_SYS (gettimeofday, int,
    103                   (struct timeval *restrict, void *restrict)
    104                   _GL_ARG_NONNULL ((1)));
    105 #  endif
    106 /* Need to cast, because on glibc systems, by default, the second argument is
    107                                                   struct timezone *.  */
    108 _GL_CXXALIAS_SYS_CAST (gettimeofday, int,
    109                        (struct timeval *restrict, void *restrict));
    110 # endif
    111 _GL_CXXALIASWARN (gettimeofday);
    112 # if defined __cplusplus && defined GNULIB_NAMESPACE
    113 namespace GNULIB_NAMESPACE {
    114   typedef ::timeval
    115 #  undef timeval
    116     timeval;
    117 #  if @REPLACE_STRUCT_TIMEVAL@
    118 #   define timeval rpl_timeval
    119   typedef ::timeval timeval;
    120 #  endif
    121 }
    122 # endif
    123 #elif defined GNULIB_POSIXCHECK
    124 # undef gettimeofday
    125 # if HAVE_RAW_DECL_GETTIMEOFDAY
    126 _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
    127                  "use gnulib module gettimeofday for portability");
    128 # endif
    129 #endif
    130 
    131 /* Hide some function declarations from <winsock2.h>.  */
    132 
    133 #if defined _MSC_VER && @HAVE_WINSOCK2_H@
    134 # if !defined _@GUARD_PREFIX@_UNISTD_H
    135 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    136 #   undef close
    137 #   define close close_used_without_including_unistd_h
    138 #  else
    139      _GL_WARN_ON_USE (close,
    140                       "close() used without including <unistd.h>");
    141 #  endif
    142 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    143 #   undef gethostname
    144 #   define gethostname gethostname_used_without_including_unistd_h
    145 #  else
    146      _GL_WARN_ON_USE (gethostname,
    147                       "gethostname() used without including <unistd.h>");
    148 #  endif
    149 # endif
    150 # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
    151 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    152 #   undef socket
    153 #   define socket              socket_used_without_including_sys_socket_h
    154 #   undef connect
    155 #   define connect             connect_used_without_including_sys_socket_h
    156 #   undef accept
    157 #   define accept              accept_used_without_including_sys_socket_h
    158 #   undef bind
    159 #   define bind                bind_used_without_including_sys_socket_h
    160 #   undef getpeername
    161 #   define getpeername         getpeername_used_without_including_sys_socket_h
    162 #   undef getsockname
    163 #   define getsockname         getsockname_used_without_including_sys_socket_h
    164 #   undef getsockopt
    165 #   define getsockopt          getsockopt_used_without_including_sys_socket_h
    166 #   undef listen
    167 #   define listen              listen_used_without_including_sys_socket_h
    168 #   undef recv
    169 #   define recv                recv_used_without_including_sys_socket_h
    170 #   undef send
    171 #   define send                send_used_without_including_sys_socket_h
    172 #   undef recvfrom
    173 #   define recvfrom            recvfrom_used_without_including_sys_socket_h
    174 #   undef sendto
    175 #   define sendto              sendto_used_without_including_sys_socket_h
    176 #   undef setsockopt
    177 #   define setsockopt          setsockopt_used_without_including_sys_socket_h
    178 #   undef shutdown
    179 #   define shutdown            shutdown_used_without_including_sys_socket_h
    180 #  else
    181      _GL_WARN_ON_USE (socket,
    182                       "socket() used without including <sys/socket.h>");
    183      _GL_WARN_ON_USE (connect,
    184                       "connect() used without including <sys/socket.h>");
    185      _GL_WARN_ON_USE (accept,
    186                       "accept() used without including <sys/socket.h>");
    187      _GL_WARN_ON_USE (bind,
    188                       "bind() used without including <sys/socket.h>");
    189      _GL_WARN_ON_USE (getpeername,
    190                       "getpeername() used without including <sys/socket.h>");
    191      _GL_WARN_ON_USE (getsockname,
    192                       "getsockname() used without including <sys/socket.h>");
    193      _GL_WARN_ON_USE (getsockopt,
    194                       "getsockopt() used without including <sys/socket.h>");
    195      _GL_WARN_ON_USE (listen,
    196                       "listen() used without including <sys/socket.h>");
    197      _GL_WARN_ON_USE (recv,
    198                       "recv() used without including <sys/socket.h>");
    199      _GL_WARN_ON_USE (send,
    200                       "send() used without including <sys/socket.h>");
    201      _GL_WARN_ON_USE (recvfrom,
    202                       "recvfrom() used without including <sys/socket.h>");
    203      _GL_WARN_ON_USE (sendto,
    204                       "sendto() used without including <sys/socket.h>");
    205      _GL_WARN_ON_USE (setsockopt,
    206                       "setsockopt() used without including <sys/socket.h>");
    207      _GL_WARN_ON_USE (shutdown,
    208                       "shutdown() used without including <sys/socket.h>");
    209 #  endif
    210 # endif
    211 # if !defined _@GUARD_PREFIX@_SYS_SELECT_H
    212 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
    213 #   undef select
    214 #   define select select_used_without_including_sys_select_h
    215 #  else
    216      _GL_WARN_ON_USE (select,
    217                       "select() used without including <sys/select.h>");
    218 #  endif
    219 # endif
    220 #endif
    221 
    222 #endif /* _@GUARD_PREFIX@_SYS_TIME_H */
    223 #endif /* _CYGWIN_SYS_TIME_H */
    224 #endif /* _@GUARD_PREFIX@_SYS_TIME_H */
    225