blob: 78cbf64f515d7b120b35090784ba2425409d2811 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
/*
* Portable emulation of utmp access routines, such as for broken BSD.
* $Id$
* Copyright (c) 1997 by Tycho Softworks.
* For conditions of distribution and use see license.
*/
#include <std/utmp.h>
#include <std/files.h>
#ifdef GETUTENT_F_MISSING
static fd_t ut = -1;
static struct utmp utmp;
void setutent(void)
{
if(ut < 0)
ut = open(_PATH_UTMP, O_RDONLY);
if(ut < 0)
return;
lseek(ut, 0l, SEEK_SET);
}
void endutent(void)
{
if(ut > -1)
{
close(ut);
ut = -1;
}
}
struct utmp *getutent(void)
{
if(ut < 0)
setutent();
if(ut < 0)
return NULL;
if(read(ut, &utmp, sizeof(utmp)) < sizeof(utmp))
return NULL;
return &utmp;
}
#endif
|