sys_time.in.h 7.04 KB
Newer Older
1 2
/* Provide a more complete sys/time.h.

3
   Copyright (C) 2007-2013 Free Software Foundation, Inc.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */

/* Written by Paul Eggert.  */

Paul Eggert's avatar
Paul Eggert committed
20 21
#ifndef _@GUARD_PREFIX@_SYS_TIME_H

22 23 24 25 26
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
#endif
@PRAGMA_COLUMNS@

Paul Eggert's avatar
Paul Eggert committed
27 28 29 30
/* The include_next requires a split double-inclusion guard.  */
#if @HAVE_SYS_TIME_H@
# @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
#endif
31

Paul Eggert's avatar
Paul Eggert committed
32 33
#ifndef _@GUARD_PREFIX@_SYS_TIME_H
#define _@GUARD_PREFIX@_SYS_TIME_H
34

Paul Eggert's avatar
Paul Eggert committed
35 36 37
#if ! @HAVE_SYS_TIME_H@
# include <time.h>
#endif
38 39 40 41 42

/* On native Windows with MSVC, get the 'struct timeval' type.
   Also, on native Windows with a 64-bit time_t, where we are overriding the
   'struct timeval' type, get all declarations of system functions whose
   signature contains 'struct timeval'.  */
Paul Eggert's avatar
Paul Eggert committed
43 44 45 46 47
#if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
# define _GL_INCLUDING_WINSOCK2_H
# include <winsock2.h>
# undef _GL_INCLUDING_WINSOCK2_H
#endif
48 49 50 51 52 53 54

/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */

/* The definition of _GL_ARG_NONNULL is copied here.  */

/* The definition of _GL_WARN_ON_USE is copied here.  */

Paul Eggert's avatar
Paul Eggert committed
55
#ifdef __cplusplus
56
extern "C" {
Paul Eggert's avatar
Paul Eggert committed
57
#endif
58

Paul Eggert's avatar
Paul Eggert committed
59
#if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@
60

Paul Eggert's avatar
Paul Eggert committed
61 62 63
# if @REPLACE_STRUCT_TIMEVAL@
#  define timeval rpl_timeval
# endif
64

Paul Eggert's avatar
Paul Eggert committed
65
# if !GNULIB_defined_struct_timeval
66 67 68 69 70
struct timeval
{
  time_t tv_sec;
  long int tv_usec;
};
Paul Eggert's avatar
Paul Eggert committed
71
#  define GNULIB_defined_struct_timeval 1
72 73
# endif

Paul Eggert's avatar
Paul Eggert committed
74 75 76
#endif

#ifdef __cplusplus
77
}
Paul Eggert's avatar
Paul Eggert committed
78
#endif
79

Paul Eggert's avatar
Paul Eggert committed
80 81 82 83 84 85
#if @GNULIB_GETTIMEOFDAY@
# if @REPLACE_GETTIMEOFDAY@
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#   undef gettimeofday
#   define gettimeofday rpl_gettimeofday
#  endif
86 87 88 89 90
_GL_FUNCDECL_RPL (gettimeofday, int,
                  (struct timeval *restrict, void *restrict)
                  _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (gettimeofday, int,
                  (struct timeval *restrict, void *restrict));
Paul Eggert's avatar
Paul Eggert committed
91 92
# else
#  if !@HAVE_GETTIMEOFDAY@
93 94 95
_GL_FUNCDECL_SYS (gettimeofday, int,
                  (struct timeval *restrict, void *restrict)
                  _GL_ARG_NONNULL ((1)));
Paul Eggert's avatar
Paul Eggert committed
96
#  endif
97 98 99 100
/* Need to cast, because on glibc systems, by default, the second argument is
                                                  struct timezone *.  */
_GL_CXXALIAS_SYS_CAST (gettimeofday, int,
                       (struct timeval *restrict, void *restrict));
Paul Eggert's avatar
Paul Eggert committed
101
# endif
102
_GL_CXXALIASWARN (gettimeofday);
Paul Eggert's avatar
Paul Eggert committed
103 104 105
#elif defined GNULIB_POSIXCHECK
# undef gettimeofday
# if HAVE_RAW_DECL_GETTIMEOFDAY
106 107 108
_GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
                 "use gnulib module gettimeofday for portability");
# endif
Paul Eggert's avatar
Paul Eggert committed
109
#endif
110 111 112

/* Hide some function declarations from <winsock2.h>.  */

Paul Eggert's avatar
Paul Eggert committed
113 114 115 116 117 118
#if defined _MSC_VER && @HAVE_WINSOCK2_H@
# if !defined _@GUARD_PREFIX@_UNISTD_H
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#   undef close
#   define close close_used_without_including_unistd_h
#  else
119 120
     _GL_WARN_ON_USE (close,
                      "close() used without including <unistd.h>");
Paul Eggert's avatar
Paul Eggert committed
121 122 123 124 125
#  endif
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#   undef gethostname
#   define gethostname gethostname_used_without_including_unistd_h
#  else
126 127 128
     _GL_WARN_ON_USE (gethostname,
                      "gethostname() used without including <unistd.h>");
#  endif
Paul Eggert's avatar
Paul Eggert committed
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
# endif
# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#   undef socket
#   define socket              socket_used_without_including_sys_socket_h
#   undef connect
#   define connect             connect_used_without_including_sys_socket_h
#   undef accept
#   define accept              accept_used_without_including_sys_socket_h
#   undef bind
#   define bind                bind_used_without_including_sys_socket_h
#   undef getpeername
#   define getpeername         getpeername_used_without_including_sys_socket_h
#   undef getsockname
#   define getsockname         getsockname_used_without_including_sys_socket_h
#   undef getsockopt
#   define getsockopt          getsockopt_used_without_including_sys_socket_h
#   undef listen
#   define listen              listen_used_without_including_sys_socket_h
#   undef recv
#   define recv                recv_used_without_including_sys_socket_h
#   undef send
#   define send                send_used_without_including_sys_socket_h
#   undef recvfrom
#   define recvfrom            recvfrom_used_without_including_sys_socket_h
#   undef sendto
#   define sendto              sendto_used_without_including_sys_socket_h
#   undef setsockopt
#   define setsockopt          setsockopt_used_without_including_sys_socket_h
#   undef shutdown
#   define shutdown            shutdown_used_without_including_sys_socket_h
#  else
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
     _GL_WARN_ON_USE (socket,
                      "socket() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (connect,
                      "connect() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (accept,
                      "accept() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (bind,
                      "bind() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (getpeername,
                      "getpeername() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (getsockname,
                      "getsockname() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (getsockopt,
                      "getsockopt() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (listen,
                      "listen() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (recv,
                      "recv() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (send,
                      "send() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (recvfrom,
                      "recvfrom() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (sendto,
                      "sendto() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (setsockopt,
                      "setsockopt() used without including <sys/socket.h>");
     _GL_WARN_ON_USE (shutdown,
                      "shutdown() used without including <sys/socket.h>");
#  endif
Paul Eggert's avatar
Paul Eggert committed
190 191 192 193 194 195
# endif
# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#   undef select
#   define select select_used_without_including_sys_select_h
#  else
196 197 198 199
     _GL_WARN_ON_USE (select,
                      "select() used without including <sys/select.h>");
#  endif
# endif
Paul Eggert's avatar
Paul Eggert committed
200
#endif
201 202

#endif /* _@GUARD_PREFIX@_SYS_TIME_H */
Paul Eggert's avatar
Paul Eggert committed
203
#endif /* _@GUARD_PREFIX@_SYS_TIME_H */