diff options
author | ed <ed@FreeBSD.org> | 2010-01-13 18:09:21 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2010-01-13 18:09:21 +0000 |
commit | 7aa5833636168ba9989927eb04dc999194aa0d6d (patch) | |
tree | 9d6201a456ce3d430c559a4ee7e2269f9a1ec23f | |
parent | 3ee361c8b5015567cf35ed84e91595e1597b0b6c (diff) | |
download | FreeBSD-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/Makefile | 4 | ||||
-rw-r--r-- | usr.bin/w/w.c | 11 |
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); |