- Don't core dump when we have stale utmp entries; warn the user instead.
- Make this work again in single user when invoked as uptime and utmp is not present.
This commit is contained in:
parent
1ef7adc1bf
commit
2120a34cd6
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: w.c,v 1.40 2000/07/22 03:14:06 simonb Exp $ */
|
||||
/* $NetBSD: w.c,v 1.41 2000/08/21 00:19:06 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1991, 1993, 1994
|
||||
@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 1991, 1993, 1994\n\
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)w.c 8.6 (Berkeley) 6/30/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: w.c,v 1.40 2000/07/22 03:14:06 simonb Exp $");
|
||||
__RCSID("$NetBSD: w.c,v 1.41 2000/08/21 00:19:06 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
@ -180,13 +180,13 @@ main(argc, argv)
|
||||
errx(1, "%s", errbuf);
|
||||
|
||||
(void)time(&now);
|
||||
if ((ut = fopen(_PATH_UTMP, "r")) == NULL)
|
||||
if ((ut = fopen(_PATH_UTMP, "r")) == NULL && wcmd)
|
||||
err(1, "%s", _PATH_UTMP);
|
||||
|
||||
if (*argv)
|
||||
sel_user = *argv;
|
||||
|
||||
for (nusers = 0; fread(&utmp, sizeof(utmp), 1, ut);) {
|
||||
for (nusers = 0; ut && fread(&utmp, sizeof(utmp), 1, ut);) {
|
||||
if (utmp.ut_name[0] == '\0')
|
||||
continue;
|
||||
++nusers;
|
||||
@ -217,7 +217,10 @@ main(argc, argv)
|
||||
if ((ep->idle = now - stp->st_atime) < 0)
|
||||
ep->idle = 0;
|
||||
}
|
||||
(void)fclose(ut);
|
||||
if (ut)
|
||||
(void)fclose(ut);
|
||||
else
|
||||
nusers = 1;
|
||||
|
||||
if (header || wcmd == 0) {
|
||||
pr_header(&now, nusers);
|
||||
@ -319,6 +322,13 @@ main(argc, argv)
|
||||
(int)(ep->utmp.ut_host + UT_HOSTSIZE - x), x);
|
||||
p = buf;
|
||||
}
|
||||
if (ep->kp == NULL) {
|
||||
warnx("Stale utmp entry: %.*s %.*s %.*s",
|
||||
UT_NAMESIZE, ep->utmp.ut_name,
|
||||
UT_LINESIZE, ep->utmp.ut_line,
|
||||
UT_HOSTSIZE, ep->utmp.ut_host);
|
||||
continue;
|
||||
}
|
||||
(void)printf("%-*s %-2.2s %-*.*s ",
|
||||
lognamelen, ep->kp->p_login,
|
||||
(strncmp(ep->utmp.ut_line, "tty", 3) &&
|
||||
|
Loading…
Reference in New Issue
Block a user