summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2010-01-13 18:09:21 +0000
committered <ed@FreeBSD.org>2010-01-13 18:09:21 +0000
commit7aa5833636168ba9989927eb04dc999194aa0d6d (patch)
tree9d6201a456ce3d430c559a4ee7e2269f9a1ec23f
parent3ee361c8b5015567cf35ed84e91595e1597b0b6c (diff)
downloadFreeBSD-src-7aa5833636168ba9989927eb04dc999194aa0d6d.zip
FreeBSD-src-7aa5833636168ba9989927eb04dc999194aa0d6d.tar.gz
Port w(1) to utmpx.
Let it print "-" when the TTY string is empty. In this case, it must also make sure it doesn't match processes who also have no controlling TTY. Otherwise it will print random kernel processes when trying to pick the best matching process. Eventually it should look at the value of ut_pid as well.
-rw-r--r--usr.bin/w/Makefile4
-rw-r--r--usr.bin/w/w.c11
2 files changed, 8 insertions, 7 deletions
diff --git a/usr.bin/w/Makefile b/usr.bin/w/Makefile
index f53d8c7..1515a87 100644
--- a/usr.bin/w/Makefile
+++ b/usr.bin/w/Makefile
@@ -4,8 +4,8 @@
PROG= w
SRCS= fmt.c pr_time.c proc_compare.c w.c
MAN= w.1 uptime.1
-DPADD= ${LIBKVM} ${LIBULOG} ${LIBUTIL}
-LDADD= -lkvm -lulog -lutil
+DPADD= ${LIBKVM} ${LIBUTIL}
+LDADD= -lkvm -lutil
#BINGRP= kmem
#BINMODE=2555
LINKS= ${BINDIR}/w ${BINDIR}/uptime
diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c
index 0e4397d..0612cd8 100644
--- a/usr.bin/w/w.c
+++ b/usr.bin/w/w.c
@@ -83,9 +83,8 @@ static const char sccsid[] = "@(#)w.c 8.4 (Berkeley) 4/16/94";
#include <stdlib.h>
#include <string.h>
#include <timeconv.h>
-#define _ULOG_POSIX_NAMES
-#include <ulog.h>
#include <unistd.h>
+#include <utmpx.h>
#include <vis.h>
#include "extern.h"
@@ -283,7 +282,8 @@ main(int argc, char *argv[])
if ((kp = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nentries)) == NULL)
err(1, "%s", kvm_geterr(kd));
for (i = 0; i < nentries; i++, kp++) {
- if (kp->ki_stat == SIDL || kp->ki_stat == SZOMB)
+ if (kp->ki_stat == SIDL || kp->ki_stat == SZOMB ||
+ kp->ki_tdev == NODEV)
continue;
for (ep = ehead; ep != NULL; ep = ep->next) {
if (ep->tdev == kp->ki_tdev) {
@@ -418,9 +418,10 @@ main(int argc, char *argv[])
(void)printf("%-*.*s %-*.*s %-*.*s ",
W_DISPUSERSIZE, W_DISPUSERSIZE, ep->utmp.ut_user,
W_DISPLINESIZE, W_DISPLINESIZE,
- strncmp(ep->utmp.ut_line, "tty", 3) &&
+ *ep->utmp.ut_line ?
+ (strncmp(ep->utmp.ut_line, "tty", 3) &&
strncmp(ep->utmp.ut_line, "cua", 3) ?
- ep->utmp.ut_line : ep->utmp.ut_line + 3,
+ ep->utmp.ut_line : ep->utmp.ut_line + 3) : "-",
W_DISPHOSTSIZE, W_DISPHOSTSIZE, *p ? p : "-");
t = ep->utmp.ut_tv.tv_sec;
longattime = pr_attime(&t, &now);
OpenPOWER on IntegriCloud