Merge commit 'b572c3a256e7bf1e4eecc8c36448c08093240a6a' into stable
[gnulib.git] / lib / sys_time.in.h
1 /* Provide a more complete sys/time.h.
2
3    Copyright (C) 2007-2011 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 2, 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, write to the Free Software Foundation,
17    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
18
19 /* Written by Paul Eggert.  */
20
21 #if __GNUC__ >= 3
22 @PRAGMA_SYSTEM_HEADER@
23 #endif
24 @PRAGMA_COLUMNS@
25
26 #if defined _@GUARD_PREFIX@_SYS_TIME_H
27
28 /* Simply delegate to the system's header, without adding anything.  */
29 # if @HAVE_SYS_TIME_H@
30 #  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
31 # endif
32
33 #else
34
35 # define _@GUARD_PREFIX@_SYS_TIME_H
36
37 # if @HAVE_SYS_TIME_H@
38 #  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
39 # else
40 #  include <time.h>
41 # endif
42
43 /* On native Windows with MSVC:
44    Get the 'struct timeval' type.  */
45 # if defined _MSC_VER && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H
46 #  define _GL_INCLUDING_WINSOCK2_H
47 #  include <winsock2.h>
48 #  undef _GL_INCLUDING_WINSOCK2_H
49 # endif
50
51 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
52
53 /* The definition of _GL_ARG_NONNULL is copied here.  */
54
55 /* The definition of _GL_WARN_ON_USE is copied here.  */
56
57 # ifdef __cplusplus
58 extern "C" {
59 # endif
60
61 # if ! @HAVE_STRUCT_TIMEVAL@
62
63 #  if !GNULIB_defined_struct_timeval
64 struct timeval
65 {
66   time_t tv_sec;
67   long int tv_usec;
68 };
69 #   define GNULIB_defined_struct_timeval 1
70 #  endif
71
72 # endif
73
74 # ifdef __cplusplus
75 }
76 # endif
77
78 # if @GNULIB_GETTIMEOFDAY@
79 #  if @REPLACE_GETTIMEOFDAY@
80 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
81 #    undef gettimeofday
82 #    define gettimeofday rpl_gettimeofday
83 #   endif
84 _GL_FUNCDECL_RPL (gettimeofday, int,
85                   (struct timeval *restrict, void *restrict)
86                   _GL_ARG_NONNULL ((1)));
87 _GL_CXXALIAS_RPL (gettimeofday, int,
88                   (struct timeval *restrict, void *restrict));
89 #  else
90 #   if !@HAVE_GETTIMEOFDAY@
91 _GL_FUNCDECL_SYS (gettimeofday, int,
92                   (struct timeval *restrict, void *restrict)
93                   _GL_ARG_NONNULL ((1)));
94 #   endif
95 /* Need to cast, because on glibc systems, by default, the second argument is
96                                                   struct timezone *.  */
97 _GL_CXXALIAS_SYS_CAST (gettimeofday, int,
98                        (struct timeval *restrict, void *restrict));
99 #  endif
100 _GL_CXXALIASWARN (gettimeofday);
101 # elif defined GNULIB_POSIXCHECK
102 #  undef gettimeofday
103 #  if HAVE_RAW_DECL_GETTIMEOFDAY
104 _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
105                  "use gnulib module gettimeofday for portability");
106 #  endif
107 # endif
108
109 /* Hide some function declarations from <winsock2.h>.  */
110
111 # if defined _MSC_VER && @HAVE_WINSOCK2_H@
112 #  if !defined _@GUARD_PREFIX@_UNISTD_H
113 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
114 #    undef close
115 #    define close close_used_without_including_unistd_h
116 #   else
117      _GL_WARN_ON_USE (close,
118                       "close() used without including <unistd.h>");
119 #   endif
120 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
121 #    undef gethostname
122 #    define gethostname gethostname_used_without_including_unistd_h
123 #   else
124      _GL_WARN_ON_USE (gethostname,
125                       "gethostname() used without including <unistd.h>");
126 #   endif
127 #  endif
128 #  if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
129 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
130 #    undef socket
131 #    define socket              socket_used_without_including_sys_socket_h
132 #    undef connect
133 #    define connect             connect_used_without_including_sys_socket_h
134 #    undef accept
135 #    define accept              accept_used_without_including_sys_socket_h
136 #    undef bind
137 #    define bind                bind_used_without_including_sys_socket_h
138 #    undef getpeername
139 #    define getpeername         getpeername_used_without_including_sys_socket_h
140 #    undef getsockname
141 #    define getsockname         getsockname_used_without_including_sys_socket_h
142 #    undef getsockopt
143 #    define getsockopt          getsockopt_used_without_including_sys_socket_h
144 #    undef listen
145 #    define listen              listen_used_without_including_sys_socket_h
146 #    undef recv
147 #    define recv                recv_used_without_including_sys_socket_h
148 #    undef send
149 #    define send                send_used_without_including_sys_socket_h
150 #    undef recvfrom
151 #    define recvfrom            recvfrom_used_without_including_sys_socket_h
152 #    undef sendto
153 #    define sendto              sendto_used_without_including_sys_socket_h
154 #    undef setsockopt
155 #    define setsockopt          setsockopt_used_without_including_sys_socket_h
156 #    undef shutdown
157 #    define shutdown            shutdown_used_without_including_sys_socket_h
158 #   else
159      _GL_WARN_ON_USE (socket,
160                       "socket() used without including <sys/socket.h>");
161      _GL_WARN_ON_USE (connect,
162                       "connect() used without including <sys/socket.h>");
163      _GL_WARN_ON_USE (accept,
164                       "accept() used without including <sys/socket.h>");
165      _GL_WARN_ON_USE (bind,
166                       "bind() used without including <sys/socket.h>");
167      _GL_WARN_ON_USE (getpeername,
168                       "getpeername() used without including <sys/socket.h>");
169      _GL_WARN_ON_USE (getsockname,
170                       "getsockname() used without including <sys/socket.h>");
171      _GL_WARN_ON_USE (getsockopt,
172                       "getsockopt() used without including <sys/socket.h>");
173      _GL_WARN_ON_USE (listen,
174                       "listen() used without including <sys/socket.h>");
175      _GL_WARN_ON_USE (recv,
176                       "recv() used without including <sys/socket.h>");
177      _GL_WARN_ON_USE (send,
178                       "send() used without including <sys/socket.h>");
179      _GL_WARN_ON_USE (recvfrom,
180                       "recvfrom() used without including <sys/socket.h>");
181      _GL_WARN_ON_USE (sendto,
182                       "sendto() used without including <sys/socket.h>");
183      _GL_WARN_ON_USE (setsockopt,
184                       "setsockopt() used without including <sys/socket.h>");
185      _GL_WARN_ON_USE (shutdown,
186                       "shutdown() used without including <sys/socket.h>");
187 #   endif
188 #  endif
189 #  if !defined _@GUARD_PREFIX@_SYS_SELECT_H
190 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
191 #    undef select
192 #    define select select_used_without_including_sys_select_h
193 #   else
194      _GL_WARN_ON_USE (select,
195                       "select() used without including <sys/select.h>");
196 #   endif
197 #  endif
198 # endif
199
200 #endif /* _@GUARD_PREFIX@_SYS_TIME_H */