gettimeofday: restore support for platforms that lack function
[gnulib.git] / lib / sys_time.in.h
1 /* Provide a more complete sys/time.h.
2
3    Copyright (C) 2007-2010 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
25 #if defined _GL_SYS_TIME_H
26
27 /* Simply delegate to the system's header, without adding anything.  */
28 # if @HAVE_SYS_TIME_H@
29 #  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
30 # endif
31
32 #else
33
34 # define _GL_SYS_TIME_H
35
36 # if @HAVE_SYS_TIME_H@
37 #  @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@
38 # else
39 #  include <time.h>
40 # endif
41
42 /* The definition of _GL_ARG_NONNULL is copied here.  */
43
44 /* The definition of _GL_WARN_ON_USE is copied here.  */
45
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49
50 # if ! @HAVE_STRUCT_TIMEVAL@
51 struct timeval
52 {
53   time_t tv_sec;
54   long int tv_usec;
55 };
56 # endif
57
58 # if @GNULIB_GETTIMEOFDAY@
59 #  if @REPLACE_GETTIMEOFDAY@
60 #   undef gettimeofday
61 #   define gettimeofday rpl_gettimeofday
62 #  endif
63 #  if @REPLACE_GETTIMEOFDAY@ || !@HAVE_GETTIMEOFDAY@
64 extern int gettimeofday (struct timeval *restrict, void *restrict)
65      _GL_ARG_NONNULL ((1));
66 #  endif
67 # elif defined GNULIB_POSIXCHECK
68 #  undef gettimeofday
69 #  if HAVE_RAW_DECL_GETTIMEOFDAY
70 _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
71                  "use gnulib module gettimeofday for portability");
72 #  endif
73 # endif
74
75 #ifdef __cplusplus
76 }
77 #endif
78
79 #endif /* _GL_SYS_TIME_H */