Mercurial > hg > octave-shane > gnulib-hg
annotate lib/readutmp.h @ 17255:d81be792518a
update from texinfo
author | Karl Berry <karl@freefriends.org> |
---|---|
date | Tue, 01 Jan 2013 15:51:49 -0800 |
parents | e542fd46ad6f |
children | 344018b6e5d7 |
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 |
17249
e542fd46ad6f
maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents:
16201
diff
changeset
|
3 Copyright (C) 1992-2007, 2009-2013 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 | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7884
diff
changeset
|
16 along with this program. If not, see <http://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 |
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
50 # endif |
4555 | 51 |
52 # if HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION | |
53 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination) | |
54 # else | |
55 # if HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION | |
56 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination) | |
57 # else | |
58 # define UT_EXIT_E_TERMINATION(U) 0 | |
59 # endif | |
60 # endif | |
61 | |
62 # if HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT | |
63 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit) | |
64 # else | |
65 # if HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT | |
66 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit) | |
67 # else | |
68 # define UT_EXIT_E_EXIT(U) 0 | |
69 # endif | |
70 # endif | |
71 | |
7181
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
72 # 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
|
73 |
981 | 74 # include <utmp.h> |
2403
de3b422867e1
[HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
Jim Meyering <jim@meyering.net>
parents:
2241
diff
changeset
|
75 # if !HAVE_DECL_GETUTENT |
13052 | 76 struct utmp *getutent (void); |
2403
de3b422867e1
[HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
Jim Meyering <jim@meyering.net>
parents:
2241
diff
changeset
|
77 # endif |
983
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
78 # define UTMP_STRUCT_NAME utmp |
981 | 79 # 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
|
80 # 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
|
81 # 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
|
82 # define END_UTMP_ENT endutent |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
83 # ifdef HAVE_UTMPNAME |
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
84 # define UTMP_NAME_FUNCTION utmpname |
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
85 # endif |
4555 | 86 |
87 # if HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION | |
88 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination) | |
89 # else | |
90 # if HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION | |
91 # define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination) | |
92 # else | |
93 # define UT_EXIT_E_TERMINATION(U) 0 | |
94 # endif | |
95 # endif | |
96 | |
97 # if HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT | |
98 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit) | |
99 # else | |
100 # if HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT | |
101 # define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit) | |
102 # else | |
103 # define UT_EXIT_E_EXIT(U) 0 | |
104 # endif | |
105 # endif | |
106 | |
981 | 107 # endif |
108 | |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
109 /* 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
|
110 # if HAVE_UTMPX_H |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
111 |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
112 # if HAVE_STRUCT_UTMPX_UT_USER |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
113 # define UT_USER(Utmp) ((Utmp)->ut_user) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
114 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
115 # if HAVE_STRUCT_UTMPX_UT_NAME |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
116 # undef UT_USER |
2241
2c6457a96048
(UT_USER): Add parens. From Andreas Schwab.
Jim Meyering <jim@meyering.net>
parents:
2229
diff
changeset
|
117 # define UT_USER(Utmp) ((Utmp)->ut_name) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
118 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
119 |
7181
1090c1338506
* lib/readutmp.h: Skip most definitions if neither <utmp.h> nor
Paul Eggert <eggert@cs.ucla.edu>
parents:
6602
diff
changeset
|
120 # elif HAVE_UTMP_H |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
121 |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
122 # if HAVE_STRUCT_UTMP_UT_USER |
5159 | 123 # define UT_USER(Utmp) ((Utmp)->ut_user) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
124 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
125 # if HAVE_STRUCT_UTMP_UT_NAME |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
126 # undef UT_USER |
5159 | 127 # define UT_USER(Utmp) ((Utmp)->ut_name) |
2229
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
128 # endif |
b3a94d16a532
redo it on per-header basis
Jim Meyering <jim@meyering.net>
parents:
2226
diff
changeset
|
129 |
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 |
3806
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
132 # define HAVE_STRUCT_XTMP_UT_EXIT \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
133 (HAVE_STRUCT_UTMP_UT_EXIT \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
134 || HAVE_STRUCT_UTMPX_UT_EXIT) |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
135 |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
136 # define HAVE_STRUCT_XTMP_UT_ID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
137 (HAVE_STRUCT_UTMP_UT_ID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
138 || HAVE_STRUCT_UTMPX_UT_ID) |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
139 |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
140 # define HAVE_STRUCT_XTMP_UT_PID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
141 (HAVE_STRUCT_UTMP_UT_PID \ |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
142 || HAVE_STRUCT_UTMPX_UT_PID) |
2fce61138dcb
(UT_TYPE): Remove definition (now in who.c).
Jim Meyering <jim@meyering.net>
parents:
3276
diff
changeset
|
143 |
983
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
144 typedef struct UTMP_STRUCT_NAME STRUCT_UTMP; |
4ef0d1a19429
(PARAMS): Update prototype.
Jim Meyering <jim@meyering.net>
parents:
981
diff
changeset
|
145 |
5159 | 146 enum { UT_USER_SIZE = sizeof UT_USER ((STRUCT_UTMP *) 0) }; |
147 | |
6602
095cbbd207b1
Remove more useless parentheses.
Jim Meyering <jim@meyering.net>
parents:
5907
diff
changeset
|
148 # if !defined UTMP_FILE && defined _PATH_UTMP |
981 | 149 # define UTMP_FILE _PATH_UTMP |
150 # endif | |
151 | |
6602
095cbbd207b1
Remove more useless parentheses.
Jim Meyering <jim@meyering.net>
parents:
5907
diff
changeset
|
152 # if !defined WTMP_FILE && defined _PATH_WTMP |
981 | 153 # define WTMP_FILE _PATH_WTMP |
154 # endif | |
155 | |
156 # ifdef UTMPX_FILE /* Solaris, SysVr4 */ | |
157 # undef UTMP_FILE | |
158 # define UTMP_FILE UTMPX_FILE | |
159 # endif | |
160 | |
161 # ifdef WTMPX_FILE /* Solaris, SysVr4 */ | |
162 # undef WTMP_FILE | |
163 # define WTMP_FILE WTMPX_FILE | |
164 # endif | |
165 | |
166 # ifndef UTMP_FILE | |
167 # define UTMP_FILE "/etc/utmp" | |
168 # endif | |
169 | |
170 # ifndef WTMP_FILE | |
171 # define WTMP_FILE "/etc/wtmp" | |
172 # endif | |
173 | |
5813 | 174 # if HAVE_STRUCT_XTMP_UT_PID |
175 # define UT_PID(U) ((U)->ut_pid) | |
176 # else | |
177 # define UT_PID(U) 0 | |
178 # endif | |
179 | |
5502 | 180 # if HAVE_STRUCT_UTMP_UT_TYPE || HAVE_STRUCT_UTMPX_UT_TYPE |
181 # define UT_TYPE_EQ(U, V) ((U)->ut_type == (V)) | |
182 # define UT_TYPE_NOT_DEFINED 0 | |
183 # else | |
184 # define UT_TYPE_EQ(U, V) 0 | |
185 # define UT_TYPE_NOT_DEFINED 1 | |
186 # endif | |
187 | |
188 # ifdef BOOT_TIME | |
189 # define UT_TYPE_BOOT_TIME(U) UT_TYPE_EQ (U, BOOT_TIME) | |
190 # else | |
191 # define UT_TYPE_BOOT_TIME(U) 0 | |
192 # endif | |
193 | |
194 # ifdef USER_PROCESS | |
195 # define UT_TYPE_USER_PROCESS(U) UT_TYPE_EQ (U, USER_PROCESS) | |
196 # else | |
197 # define UT_TYPE_USER_PROCESS(U) 0 | |
198 # endif | |
199 | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
200 # define IS_USER_PROCESS(U) \ |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
201 (UT_USER (U)[0] \ |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
202 && (UT_TYPE_USER_PROCESS (U) \ |
5502 | 203 || (UT_TYPE_NOT_DEFINED && UT_TIME_MEMBER (U) != 0))) |
204 | |
5813 | 205 /* Options for read_utmp. */ |
206 enum | |
207 { | |
7521
2e592d70280a
(READ_UTMP_USER_PROCESS): New flag
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
7181
diff
changeset
|
208 READ_UTMP_CHECK_PIDS = 1, |
2e592d70280a
(READ_UTMP_USER_PROCESS): New flag
Sergey Poznyakoff <gray@gnu.org.ua>
parents:
7181
diff
changeset
|
209 READ_UTMP_USER_PROCESS = 2 |
5813 | 210 }; |
211 | |
4397
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
3806
diff
changeset
|
212 char *extract_trimmed_name (const STRUCT_UTMP *ut); |
5907 | 213 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
|
214 int options); |
981 | 215 |
216 #endif /* __READUTMP_H__ */ |