]>
Commit | Line | Data |
---|---|---|
26340613 | 1 | /* Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. |
a3e03be0 EA |
2 | This file is part of the GNU C Library. |
3 | Contributed by Ulrich Drepper <[email protected]>, 1996. | |
4 | ||
5 | The GNU C Library is free software; you can redistribute it and/or | |
26340613 MF |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either | |
8 | version 2.1 of the License, or (at your option) any later version. | |
a3e03be0 EA |
9 | |
10 | The GNU C Library 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 GNU | |
26340613 | 13 | Lesser General Public License for more details. |
a3e03be0 | 14 | |
26340613 | 15 | You should have received a copy of the GNU Lesser General Public |
266bdc1f MF |
16 | License along with the GNU C Library; if not, see |
17 | <http://www.gnu.org/licenses/>. */ | |
a3e03be0 EA |
18 | |
19 | #include <errno.h> | |
20 | #include <string.h> | |
a3e03be0 | 21 | #include <sys/time.h> |
6ff9c31a | 22 | #include "internal/utmp.h" |
a3e03be0 EA |
23 | |
24 | int | |
25 | logout (const char *line) | |
26 | { | |
6ff9c31a BRF |
27 | struct UT tmp; |
28 | struct UT *ut; | |
a3e03be0 EA |
29 | int result = 0; |
30 | ||
b2f0faf0 DV |
31 | /* if (utmpname (_PATH_UTMP) == -1) return 0; - why? |
32 | * this makes it impossible for caller to use other file! | |
33 | * Does any standard or historical precedent says this must be done? */ | |
a3e03be0 EA |
34 | |
35 | /* Open UTMP file. */ | |
36 | setutent (); | |
37 | ||
38 | /* Fill in search information. */ | |
39 | #if _HAVE_UT_TYPE - 0 | |
40 | tmp.ut_type = USER_PROCESS; | |
41 | #endif | |
42 | strncpy (tmp.ut_line, line, sizeof tmp.ut_line); | |
43 | ||
44 | /* Read the record. */ | |
b2f0faf0 | 45 | if ((ut = getutline(&tmp)) != NULL) |
a3e03be0 EA |
46 | { |
47 | /* Clear information about who & from where. */ | |
ada7878b | 48 | memset (ut->ut_name, 0, sizeof ut->ut_name); |
a3e03be0 | 49 | #if _HAVE_UT_HOST - 0 |
ada7878b | 50 | memset (ut->ut_host, 0, sizeof ut->ut_host); |
a3e03be0 EA |
51 | #endif |
52 | #if _HAVE_UT_TV - 0 | |
eee76e42 | 53 | # if !defined __WORDSIZE_TIME64_COMPAT32 |
f8f7b102 | 54 | gettimeofday (&ut->ut_tv, NULL); |
164c1d8f | 55 | # else |
b2f0faf0 DV |
56 | { |
57 | struct timeval tv; | |
58 | gettimeofday (&tv, NULL); | |
59 | ut->ut_tv.tv_sec = tv.tv_sec; | |
60 | ut->ut_tv.tv_usec = tv.tv_usec; | |
61 | } | |
164c1d8f | 62 | # endif |
a3e03be0 EA |
63 | #else |
64 | time (&ut->ut_time); | |
65 | #endif | |
66 | #if _HAVE_UT_TYPE - 0 | |
67 | ut->ut_type = DEAD_PROCESS; | |
68 | #endif | |
69 | ||
70 | if (pututline (ut) != NULL) | |
71 | result = 1; | |
72 | } | |
73 | ||
74 | /* Close UTMP file. */ | |
75 | endutent (); | |
76 | ||
77 | return result; | |
78 | } |