From 0cc9b20c15460213e488bf5e70963b941482f628 Mon Sep 17 00:00:00 2001 From: William Harrington Date: Tue, 14 Jan 2025 16:06:02 -0600 Subject: Add source. --- sdk/std/utmp.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sdk/std/utmp.c (limited to 'sdk/std/utmp.c') diff --git a/sdk/std/utmp.c b/sdk/std/utmp.c new file mode 100644 index 0000000..78cbf64 --- /dev/null +++ b/sdk/std/utmp.c @@ -0,0 +1,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 +#include + +#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 -- cgit v1.2.3-54-g00ecf