From a26880c9f0ef11de16ef7cb99e3ad1197ee2f8f0 Mon Sep 17 00:00:00 2001 From: christos Date: Fri, 2 Aug 2002 03:06:24 +0000 Subject: utmpx support. --- dm/Makefile | 6 +++++- dm/dm.c | 26 +++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) (limited to 'dm') diff --git a/dm/Makefile b/dm/Makefile index d32cad7c..2339553a 100644 --- a/dm/Makefile +++ b/dm/Makefile @@ -1,11 +1,15 @@ -# $NetBSD: Makefile,v 1.8 1997/11/19 08:23:37 mrg Exp $ +# $NetBSD: Makefile,v 1.9 2002/08/02 03:06:24 christos Exp $ # @(#)Makefile 8.1 (Berkeley) 5/31/93 # -DLOG log games PROG= dm +SRCS= dm.c utmpentry.c MAN= dm.8 dm.conf.5 # shouldn't be necessary; just in case. BINGRP= games BINMODE=2555 +.PATH.c: ${.CURDIR}/../../usr.bin/who +CPPFLAGS+=-I${.CURDIR}/../../usr.bin/who -DSUPPORT_UTMPX -DSUPPORT_UTMP + .include diff --git a/dm/dm.c b/dm/dm.c index e77a6d10..da31a248 100644 --- a/dm/dm.c +++ b/dm/dm.c @@ -1,4 +1,4 @@ -/* $NetBSD: dm.c,v 1.16 2001/01/25 20:41:41 jdolecek Exp $ */ +/* $NetBSD: dm.c,v 1.17 2002/08/02 03:06:24 christos Exp $ */ /* * Copyright (c) 1987, 1993 @@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1987, 1993\n\ #if 0 static char sccsid[] = "@(#)dm.c 8.1 (Berkeley) 5/31/93"; #else -__RCSID("$NetBSD: dm.c,v 1.16 2001/01/25 20:41:41 jdolecek Exp $"); +__RCSID("$NetBSD: dm.c,v 1.17 2002/08/02 03:06:24 christos Exp $"); #endif #endif /* not lint */ @@ -61,8 +61,8 @@ __RCSID("$NetBSD: dm.c,v 1.16 2001/01/25 20:41:41 jdolecek Exp $"); #include #include #include -#include +#include "utmpentry.h" #include "pathnames.h" static time_t now; /* current time value */ @@ -256,16 +256,16 @@ load() int users() { - - int nusers, utmp; - struct utmp buf; - - if ((utmp = open(_PATH_UTMP, O_RDONLY, 0)) < 0) - err(1, "%s", _PATH_UTMP); - for (nusers = 0; read(utmp, (char *)&buf, sizeof(struct utmp)) > 0;) - if (buf.ut_name[0] != '\0') - ++nusers; - return (nusers); + static struct utmpentry *ohead = NULL; + struct utmpentry *ep; + int nusers; + + nusers = getutentries(NULL, &ep); + if (ep != ohead) { + freeutentries(ep); + ohead = ep; + } + return nusers; } void -- cgit v1.2.3-56-ge451