Mercurial > emacs
annotate src/systime.h @ 16884:36babc489b0c
Change all uses of win95, winnt, and win32
into Windows 95, Windows NT, and W32, respectively.
Expand "win" substring in variables referring to Microsoft Windows
constructs into "windows".
Canonicalize header comments to use same terminology.
author | Geoff Voelker <voelker@cs.washington.edu> |
---|---|
date | Mon, 20 Jan 1997 00:38:22 +0000 |
parents | ee40177f6c68 |
children | 7947290d87b6 |
rev | line source |
---|---|
979 | 1 /* systime.h - System-dependent definitions for time manipulations. |
7307 | 2 Copyright (C) 1993, 1994 Free Software Foundation, Inc. |
977 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
12244 | 8 the Free Software Foundation; either version 2, or (at your option) |
977 | 9 any later version. |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12244
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
977 | 20 |
2803
ae964d7149a1
* systime.h: Borrow CPP sequence from getdate.y to include the
Jim Blandy <jimb@redhat.com>
parents:
2740
diff
changeset
|
21 #ifdef TIME_WITH_SYS_TIME |
ae964d7149a1
* systime.h: Borrow CPP sequence from getdate.y to include the
Jim Blandy <jimb@redhat.com>
parents:
2740
diff
changeset
|
22 #include <sys/time.h> |
ae964d7149a1
* systime.h: Borrow CPP sequence from getdate.y to include the
Jim Blandy <jimb@redhat.com>
parents:
2740
diff
changeset
|
23 #include <time.h> |
ae964d7149a1
* systime.h: Borrow CPP sequence from getdate.y to include the
Jim Blandy <jimb@redhat.com>
parents:
2740
diff
changeset
|
24 #else |
ae964d7149a1
* systime.h: Borrow CPP sequence from getdate.y to include the
Jim Blandy <jimb@redhat.com>
parents:
2740
diff
changeset
|
25 #ifdef HAVE_SYS_TIME_H |
1128 | 26 #include <sys/time.h> |
27 #else | |
977 | 28 #include <time.h> |
1928
699033d79ee6
* systime.h [_AIX]: Move test outside of previous #if.
Jim Blandy <jimb@redhat.com>
parents:
1571
diff
changeset
|
29 #endif |
1112 | 30 #endif |
1128 | 31 |
3523
a9967fc643c5
[HAVE_TZNAME]: Declare tzname if not macro.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
32 #ifdef HAVE_TZNAME |
a9967fc643c5
[HAVE_TZNAME]: Declare tzname if not macro.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
33 #ifndef tzname /* For SGI. */ |
a9967fc643c5
[HAVE_TZNAME]: Declare tzname if not macro.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
34 extern char *tzname[]; /* RS6000 and others want it this way. */ |
a9967fc643c5
[HAVE_TZNAME]: Declare tzname if not macro.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
35 #endif |
a9967fc643c5
[HAVE_TZNAME]: Declare tzname if not macro.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
36 #endif |
a9967fc643c5
[HAVE_TZNAME]: Declare tzname if not macro.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
37 |
2123
41ea195f5ccb
* systime.h (timezone): Add an explicit declaration for this
Jim Blandy <jimb@redhat.com>
parents:
1928
diff
changeset
|
38 /* SVr4 doesn't actually declare this in its #include files. */ |
41ea195f5ccb
* systime.h (timezone): Add an explicit declaration for this
Jim Blandy <jimb@redhat.com>
parents:
1928
diff
changeset
|
39 #ifdef USG5_4 |
41ea195f5ccb
* systime.h (timezone): Add an explicit declaration for this
Jim Blandy <jimb@redhat.com>
parents:
1928
diff
changeset
|
40 extern long timezone; |
41ea195f5ccb
* systime.h (timezone): Add an explicit declaration for this
Jim Blandy <jimb@redhat.com>
parents:
1928
diff
changeset
|
41 #endif |
41ea195f5ccb
* systime.h (timezone): Add an explicit declaration for this
Jim Blandy <jimb@redhat.com>
parents:
1928
diff
changeset
|
42 |
2264
87934d212841
Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents:
2123
diff
changeset
|
43 #ifdef VMS |
87934d212841
Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents:
2123
diff
changeset
|
44 #ifdef VAXC |
87934d212841
Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents:
2123
diff
changeset
|
45 #include "vmstime.h" |
87934d212841
Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents:
2123
diff
changeset
|
46 #endif |
87934d212841
Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents:
2123
diff
changeset
|
47 #endif |
87934d212841
Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents:
2123
diff
changeset
|
48 |
7691
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
49 /* On some configurations (hpux8.0, X11R4), sys/time.h and X11/Xos.h |
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
50 disagree about the name of the guard symbol. */ |
7694
92a4522c37fc
Make previous change limited to HPUX.
Richard M. Stallman <rms@gnu.org>
parents:
7691
diff
changeset
|
51 #ifdef HPUX |
7691
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
52 #ifdef _STRUCT_TIMEVAL |
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
53 #ifndef __TIMEVAL__ |
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
54 #define __TIMEVAL__ |
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
55 #endif |
21d7fb06e63a
If _STRUCT_TIMEVAL is defined, also define __TIMEVAL__.
Karl Heuer <kwzh@gnu.org>
parents:
7307
diff
changeset
|
56 #endif |
7694
92a4522c37fc
Make previous change limited to HPUX.
Richard M. Stallman <rms@gnu.org>
parents:
7691
diff
changeset
|
57 #endif |
979 | 58 |
977 | 59 /* EMACS_TIME is the type to use to represent temporal intervals - |
60 struct timeval on some systems, int on others. It can be passed as | |
2550 | 61 the timeout argument to the select system call. |
977 | 62 |
63 EMACS_SECS (TIME) is an rvalue for the seconds component of TIME. | |
64 EMACS_SET_SECS (TIME, SECONDS) sets that to SECONDS. | |
65 | |
66 EMACS_HAS_USECS is defined iff EMACS_TIME has a usecs component. | |
2657 | 67 EMACS_USECS (TIME) is an rvalue for the microseconds component of TIME. |
68 This returns zero if EMACS_TIME doesn't have a microseconds component. | |
69 EMACS_SET_USECS (TIME, MICROSECONDS) sets that to MICROSECONDS. | |
70 This does nothing if EMACS_TIME doesn't have a microseconds component. | |
977 | 71 |
72 EMACS_SET_SECS_USECS (TIME, SECS, USECS) sets both components of TIME. | |
73 | |
74 EMACS_GET_TIME (TIME) stores the current system time in TIME, which | |
75 should be an lvalue. | |
76 | |
77 EMACS_ADD_TIME (DEST, SRC1, SRC2) adds SRC1 to SRC2 and stores the | |
78 result in DEST. SRC should not be negative. | |
79 | |
80 EMACS_SUB_TIME (DEST, SRC1, SRC2) subtracts SRC2 from SRC1 and | |
81 stores the result in DEST. SRC should not be negative. | |
82 EMACS_TIME_NEG_P (TIME) is true iff TIME is negative. | |
83 | |
84 */ | |
85 | |
86 #ifdef HAVE_TIMEVAL | |
87 | |
2289
8317265b21dc
* systime.h (EMACS_HAS_USECS): #define this if HAVE_TIMEVAL is
Jim Blandy <jimb@redhat.com>
parents:
2264
diff
changeset
|
88 #define EMACS_HAS_USECS |
8317265b21dc
* systime.h (EMACS_HAS_USECS): #define this if HAVE_TIMEVAL is
Jim Blandy <jimb@redhat.com>
parents:
2264
diff
changeset
|
89 |
977 | 90 #define EMACS_TIME struct timeval |
91 #define EMACS_SECS(time) ((time).tv_sec + 0) | |
92 #define EMACS_USECS(time) ((time).tv_usec + 0) | |
93 #define EMACS_SET_SECS(time, seconds) ((time).tv_sec = (seconds)) | |
2657 | 94 #define EMACS_SET_USECS(time, microseconds) ((time).tv_usec = (microseconds)) |
977 | 95 |
5355
ad4092c38f51
(EMACS_GET_TIME) [USG5_4]: Give gettimeofday just one arg.
Richard M. Stallman <rms@gnu.org>
parents:
3523
diff
changeset
|
96 /* On SVR4, the compiler may complain if given this extra BSD arg. */ |
7949
19c2639826a7
(EMACS_GET_TIME): Test GETTIMEOFDAY_ONE_ARGUMENT, not USG5_4.
Richard M. Stallman <rms@gnu.org>
parents:
7694
diff
changeset
|
97 #ifdef GETTIMEOFDAY_ONE_ARGUMENT |
5355
ad4092c38f51
(EMACS_GET_TIME) [USG5_4]: Give gettimeofday just one arg.
Richard M. Stallman <rms@gnu.org>
parents:
3523
diff
changeset
|
98 #define EMACS_GET_TIME(time) \ |
ad4092c38f51
(EMACS_GET_TIME) [USG5_4]: Give gettimeofday just one arg.
Richard M. Stallman <rms@gnu.org>
parents:
3523
diff
changeset
|
99 { \ |
ad4092c38f51
(EMACS_GET_TIME) [USG5_4]: Give gettimeofday just one arg.
Richard M. Stallman <rms@gnu.org>
parents:
3523
diff
changeset
|
100 gettimeofday (&(time)); \ |
ad4092c38f51
(EMACS_GET_TIME) [USG5_4]: Give gettimeofday just one arg.
Richard M. Stallman <rms@gnu.org>
parents:
3523
diff
changeset
|
101 } |
7949
19c2639826a7
(EMACS_GET_TIME): Test GETTIMEOFDAY_ONE_ARGUMENT, not USG5_4.
Richard M. Stallman <rms@gnu.org>
parents:
7694
diff
changeset
|
102 #else /* not GETTIMEOFDAY_ONE_ARGUMENT */ |
977 | 103 #define EMACS_GET_TIME(time) \ |
104 { \ | |
978 | 105 struct timezone dummy; \ |
977 | 106 gettimeofday (&(time), &dummy); \ |
107 } | |
7949
19c2639826a7
(EMACS_GET_TIME): Test GETTIMEOFDAY_ONE_ARGUMENT, not USG5_4.
Richard M. Stallman <rms@gnu.org>
parents:
7694
diff
changeset
|
108 #endif /* not GETTIMEOFDAY_ONE_ARGUMENT */ |
977 | 109 |
110 #define EMACS_ADD_TIME(dest, src1, src2) \ | |
111 { \ | |
112 (dest).tv_sec = (src1).tv_sec + (src2).tv_sec; \ | |
113 (dest).tv_usec = (src1).tv_usec + (src2).tv_usec; \ | |
114 if ((dest).tv_usec > 1000000) \ | |
115 (dest).tv_usec -= 1000000, (dest).tv_sec++; \ | |
116 } | |
117 | |
118 #define EMACS_SUB_TIME(dest, src1, src2) \ | |
119 { \ | |
120 (dest).tv_sec = (src1).tv_sec - (src2).tv_sec; \ | |
121 (dest).tv_usec = (src1).tv_usec - (src2).tv_usec; \ | |
122 if ((dest).tv_usec < 0) \ | |
123 (dest).tv_usec += 1000000, (dest).tv_sec--; \ | |
124 } | |
125 | |
126 #define EMACS_TIME_NEG_P(time) \ | |
6577
6b5eb178d1db
(EMACS_TIME_NEG_P): Cast to signed.
Karl Heuer <kwzh@gnu.org>
parents:
5355
diff
changeset
|
127 ((long)(time).tv_sec < 0 \ |
977 | 128 || ((time).tv_sec == 0 \ |
6577
6b5eb178d1db
(EMACS_TIME_NEG_P): Cast to signed.
Karl Heuer <kwzh@gnu.org>
parents:
5355
diff
changeset
|
129 && (long)(time).tv_usec < 0)) |
977 | 130 |
979 | 131 #else /* ! defined (HAVE_TIMEVAL) */ |
977 | 132 |
133 #define EMACS_TIME int | |
134 #define EMACS_SECS(time) (time) | |
999 | 135 #define EMACS_USECS(time) 0 |
977 | 136 #define EMACS_SET_SECS(time, seconds) ((time) = (seconds)) |
999 | 137 #define EMACS_SET_USECS(time, usecs) 0 |
977 | 138 |
139 #define EMACS_GET_TIME(t) ((t) = time ((long *) 0)) | |
140 #define EMACS_ADD_TIME(dest, src1, src2) ((dest) = (src1) + (src2)) | |
141 #define EMACS_SUB_TIME(dest, src1, src2) ((dest) = (src1) - (src2)) | |
142 #define EMACS_TIME_NEG_P(t) ((t) < 0) | |
143 | |
979 | 144 #endif /* ! defined (HAVE_TIMEVAL) */ |
977 | 145 |
146 #define EMACS_SET_SECS_USECS(time, secs, usecs) \ | |
147 (EMACS_SET_SECS (time, secs), EMACS_SET_USECS (time, usecs)) | |
148 | |
8882 | 149 extern int set_file_times (); |