Mercurial > gnulib
annotate lib/readutmp.h @ 40231:9b3c79fdfe0b
strtod: fix clash with strtold
Problem reported for RHEL 5 by Jesse Caldwell (Bug#34817).
* lib/strtod.c (compute_minus_zero, minus_zero):
Simplify by remving the macro / external variable,
and having just a function. User changed. This avoids
the need for an external variable that might clash.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Mon, 11 Mar 2019 16:40:29 -0700 |
parents | b06060465f09 |
children |
rev | line source |
---|---|
981 | 1 /* Declarations for GNU's read utmp module. |
4397
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
3806
diff
changeset
|
2 |
40057
b06060465f09
maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents:
19484
diff
changeset
|
3 Copyright (C) 1992-2007, 2009-2019 Free Software Foundation, Inc. |
981 | 4 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7884
diff
changeset
|
5 This program is free software: you can redistribute it and/or modify |
981 | 6 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7884
diff
changeset
|
7 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7884
diff
changeset
|
8 (at your option) any later version. |
981 | 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 | |
19190 | 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ |
981 | 17 |
18 /* Written by jla; revised by djm */ | |
19 | |
20 #ifndef __READUTMP_H__ | |
21 # define __READUTMP_H__ | |
22 | |
23 # include <sys/types.h> | |
24 | |
4555 | 25 /* AIX 4.3.3 has both utmp.h and utmpx.h, but only struct utmp |
26 has the ut_exit member. */ | |
27 # if (HAVE_UTMPX_H && HAVE_UTMP_H && HAVE_STRUCT_UTMP_UT_EXIT \ | |
28 && ! HAVE_STRUCT_UTMPX_UT_EXIT) | |
29 # undef HAVE_UTMPX_H | |
30 # endif | |
31 | |
7181
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
32 # if HAVE_UTMPX_H |
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
33 # if HAVE_UTMP_H |
2696
bec8bcc12a26
[HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
Jim Meyering <jim@meyering.net>
parents:
2403
diff
changeset
|
34 /* HPUX 10.20 needs utmp.h, for the definition of e.g., UTMP_FILE. */ |
bec8bcc12a26
[HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
Jim Meyering <jim@meyering.net>
parents:
2403
diff
changeset
|
35 # include <utmp.h> |
bec8bcc12a26
[HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
Jim Meyering <jim@meyering.net>
parents:
2403
diff
changeset
|
36 # endif |
7884
2a056686c032
* m4/readutmp.m4 (gl_READUTMP): Work around AIX 4.3 struct-
Jim Meyering <jim@meyering.net>
parents:
7521
diff
changeset
|
37 # if defined _THREAD_SAFE && defined UTMP_DATA_INIT |
2a056686c032
* m4/readutmp.m4 (gl_READUTMP): Work around AIX 4.3 struct-
Jim Meyering <jim@meyering.net>
parents:
7521
diff
changeset
|
38 /* When including both utmp.h and utmpx.h on AIX 4.3, with _THREAD_SAFE |
2a056686c032
* m4/readutmp.m4 (gl_READUTMP): Work around AIX 4.3 struct-
Jim Meyering <jim@meyering.net>
parents:
7521
diff
changeset
|
39 defined, work around the duplicate struct utmp_data declaration. */ |
2a056686c032
* m4/readutmp.m4 (gl_READUTMP): Work around AIX 4.3 struct-
Jim Meyering <jim@meyering.net>
parents:
7521
diff
changeset
|
40 # define utmp_data gl_aix_4_3_workaround_utmp_data |
2a056686c032
* m4/readutmp.m4 (gl_READUTMP): Work around AIX 4.3 struct-
Jim Meyering <jim@meyering.net>
parents:
7521
diff
changeset
|
41 # endif |
981 | 42 # include <utmpx.h> |
983
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
43 # define UTMP_STRUCT_NAME utmpx |
981 | 44 # define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_tv.tv_sec) |
1829
ae596af5aea1
Add definitions to help read utmpx on systems with utmpname.
Jim Meyering <jim@meyering.net>
parents:
1711
diff
changeset
|
45 # define SET_UTMP_ENT setutxent |
ae596af5aea1
Add definitions to help read utmpx on systems with utmpname.
Jim Meyering <jim@meyering.net>
parents:
1711
diff
changeset
|
46 # define GET_UTMP_ENT getutxent |
ae596af5aea1
Add definitions to help read utmpx on systems with utmpname.
Jim Meyering <jim@meyering.net>
parents:
1711
diff
changeset
|
47 # define END_UTMP_ENT endutxent |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
48 # ifdef HAVE_UTMPXNAME |
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
49 # define UTMP_NAME_FUNCTION utmpxname |
18033
f282834ddccc
readutmp: port to FreeBSD >= 9
Pádraig Brady <P@draigBrady.com>
parents:
17848
diff
changeset
|
50 # elif defined UTXDB_ACTIVE |
f282834ddccc
readutmp: port to FreeBSD >= 9
Pádraig Brady <P@draigBrady.com>
parents:
17848
diff
changeset
|
51 # define UTMP_NAME_FUNCTION(x) setutxdb (UTXDB_ACTIVE, x) |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
52 # endif |
4555 | 53 |
54 # if HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION | |
55 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination) | |
56 # else | |
57 # if HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION | |
58 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination) | |
59 # else | |
60 # define UT_EXIT_E_TERMINATION(U) 0 | |
61 # endif | |
62 # endif | |
63 | |
64 # if HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT | |
65 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit) | |
66 # else | |
67 # if HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT | |
68 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit) | |
69 # else | |
70 # define UT_EXIT_E_EXIT(U) 0 | |
71 # endif | |
72 # endif | |
73 | |
7181
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
74 # elif HAVE_UTMP_H |
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
75 |
981 | 76 # include <utmp.h> |
2403
de3b422867e1
[HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
Jim Meyering <jim@meyering.net>
parents:
2241
diff
changeset
|
77 # if !HAVE_DECL_GETUTENT |
13052 | 78 struct utmp *getutent (void); |
2403
de3b422867e1
[HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
Jim Meyering <jim@meyering.net>
parents:
2241
diff
changeset
|
79 # endif |
983
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
80 # define UTMP_STRUCT_NAME utmp |
981 | 81 # define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_time) |
1829
ae596af5aea1
Add definitions to help read utmpx on systems with utmpname.
Jim Meyering <jim@meyering.net>
parents:
1711
diff
changeset
|
82 # define SET_UTMP_ENT setutent |
ae596af5aea1
Add definitions to help read utmpx on systems with utmpname.
Jim Meyering <jim@meyering.net>
parents:
1711
diff
changeset
|
83 # define GET_UTMP_ENT getutent |
ae596af5aea1
Add definitions to help read utmpx on systems with utmpname.
Jim Meyering <jim@meyering.net>
parents:
1711
diff
changeset
|
84 # define END_UTMP_ENT endutent |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
85 # ifdef HAVE_UTMPNAME |
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
86 # define UTMP_NAME_FUNCTION utmpname |
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
87 # endif |
4555 | 88 |
89 # if HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION | |
90 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination) | |
91 # else | |
92 # if HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION | |
93 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination) | |
94 # else | |
95 # define UT_EXIT_E_TERMINATION(U) 0 | |
96 # endif | |
97 # endif | |
98 | |
99 # if HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT | |
100 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit) | |
101 # else | |
102 # if HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT | |
103 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit) | |
104 # else | |
105 # define UT_EXIT_E_EXIT(U) 0 | |
106 # endif | |
107 # endif | |
108 | |
981 | 109 # endif |
110 | |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
111 /* Accessor macro for the member named ut_user or ut_name. */ |
7181
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
112 # if HAVE_UTMPX_H |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
113 |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
114 # if HAVE_STRUCT_UTMPX_UT_USER |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
115 # define UT_USER(Utmp) ((Utmp)->ut_user) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
116 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
117 # if HAVE_STRUCT_UTMPX_UT_NAME |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
118 # undef UT_USER |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
119 # define UT_USER(Utmp) ((Utmp)->ut_name) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
120 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
121 |
7181
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
122 # elif HAVE_UTMP_H |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
123 |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
124 # if HAVE_STRUCT_UTMP_UT_USER |
5159 | 125 # define UT_USER(Utmp) ((Utmp)->ut_user) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
126 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
127 # if HAVE_STRUCT_UTMP_UT_NAME |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
128 # undef UT_USER |
5159 | 129 # define UT_USER(Utmp) ((Utmp)->ut_name) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
130 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
131 |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
132 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
133 |
3806
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
134 # define HAVE_STRUCT_XTMP_UT_EXIT \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
135 (HAVE_STRUCT_UTMP_UT_EXIT \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
136 || HAVE_STRUCT_UTMPX_UT_EXIT) |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
137 |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
138 # define HAVE_STRUCT_XTMP_UT_ID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
139 (HAVE_STRUCT_UTMP_UT_ID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
140 || HAVE_STRUCT_UTMPX_UT_ID) |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
141 |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
142 # define HAVE_STRUCT_XTMP_UT_PID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
143 (HAVE_STRUCT_UTMP_UT_PID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
144 || HAVE_STRUCT_UTMPX_UT_PID) |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
145 |
983
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
146 typedef struct UTMP_STRUCT_NAME STRUCT_UTMP; |
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
147 |
5159 | 148 enum { UT_USER_SIZE = sizeof UT_USER ((STRUCT_UTMP *) 0) }; |
149 | |
6602
095cbbd207b1
Remove more useless parentheses.
Jim Meyering <jim@meyering.net>
parents:
5907
diff
changeset
|
150 # if !defined UTMP_FILE && defined _PATH_UTMP |
981 | 151 # define UTMP_FILE _PATH_UTMP |
152 # endif | |
153 | |
6602
095cbbd207b1
Remove more useless parentheses.
Jim Meyering <jim@meyering.net>
parents:
5907
diff
changeset
|
154 # if !defined WTMP_FILE && defined _PATH_WTMP |
981 | 155 # define WTMP_FILE _PATH_WTMP |
156 # endif | |
157 | |
158 # ifdef UTMPX_FILE /* Solaris, SysVr4 */ | |
159 # undef UTMP_FILE | |
160 # define UTMP_FILE UTMPX_FILE | |
161 # endif | |
162 | |
163 # ifdef WTMPX_FILE /* Solaris, SysVr4 */ | |
164 # undef WTMP_FILE | |
165 # define WTMP_FILE WTMPX_FILE | |
166 # endif | |
167 | |
168 # ifndef UTMP_FILE | |
169 # define UTMP_FILE "/etc/utmp" | |
170 # endif | |
171 | |
172 # ifndef WTMP_FILE | |
173 # define WTMP_FILE "/etc/wtmp" | |
174 # endif | |
175 | |
5813 | 176 # if HAVE_STRUCT_XTMP_UT_PID |
177 # define UT_PID(U) ((U)->ut_pid) | |
178 # else | |
179 # define UT_PID(U) 0 | |
180 # endif | |
181 | |
5502 | 182 # if HAVE_STRUCT_UTMP_UT_TYPE || HAVE_STRUCT_UTMPX_UT_TYPE |
183 # define UT_TYPE_EQ(U, V) ((U)->ut_type == (V)) | |
184 # define UT_TYPE_NOT_DEFINED 0 | |
185 # else | |
186 # define UT_TYPE_EQ(U, V) 0 | |
187 # define UT_TYPE_NOT_DEFINED 1 | |
188 # endif | |
189 | |
190 # ifdef BOOT_TIME | |
191 # define UT_TYPE_BOOT_TIME(U) UT_TYPE_EQ (U, BOOT_TIME) | |
192 # else | |
193 # define UT_TYPE_BOOT_TIME(U) 0 | |
194 # endif | |
195 | |
196 # ifdef USER_PROCESS | |
197 # define UT_TYPE_USER_PROCESS(U) UT_TYPE_EQ (U, USER_PROCESS) | |
198 # else | |
199 # define UT_TYPE_USER_PROCESS(U) 0 | |
200 # endif | |
201 | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
202 # define IS_USER_PROCESS(U) \ |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
203 (UT_USER (U)[0] \ |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
204 && (UT_TYPE_USER_PROCESS (U) \ |
5502 | 205 || (UT_TYPE_NOT_DEFINED && UT_TIME_MEMBER (U) != 0))) |
206 | |
5813 | 207 /* Options for read_utmp. */ |
208 enum | |
209 { | |
7521
2e592d70280a
(READ_UTMP_USER_PROCESS): New flag
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
7181
diff
changeset
|
210 READ_UTMP_CHECK_PIDS = 1, |
2e592d70280a
(READ_UTMP_USER_PROCESS): New flag
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
7181
diff
changeset
|
211 READ_UTMP_USER_PROCESS = 2 |
5813 | 212 }; |
213 | |
4397
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
3806
diff
changeset
|
214 char *extract_trimmed_name (const STRUCT_UTMP *ut); |
5907 | 215 int read_utmp (char const *file, size_t *n_entries, STRUCT_UTMP **utmp_buf, |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
216 int options); |
981 | 217 |
218 #endif /* __READUTMP_H__ */ |