From: millert Date: Wed, 22 Mar 2000 17:07:37 +0000 (+0000) Subject: Avoid the chdir entirely by prefixing _PATH_DEV to the tty name when X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=2e229633a55447959a5100bd78a8eef23163b5d2;p=openbsd Avoid the chdir entirely by prefixing _PATH_DEV to the tty name when doing a stat. This makes the -T and -u flags work in confunction with a file argument. --- diff --git a/usr.bin/who/who.c b/usr.bin/who/who.c index 5fd85231a39..f6f9d3e4873 100644 --- a/usr.bin/who/who.c +++ b/usr.bin/who/who.c @@ -1,4 +1,4 @@ -/* $OpenBSD: who.c,v 1.8 2000/03/21 21:54:51 ericj Exp $ */ +/* $OpenBSD: who.c,v 1.9 2000/03/22 17:07:37 millert Exp $ */ /* $NetBSD: who.c,v 1.4 1994/12/07 04:28:49 jtc Exp $ */ /* @@ -47,11 +47,12 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)who.c 8.1 (Berkeley) 6/6/93"; #endif -static char rcsid[] = "$OpenBSD: who.c,v 1.8 2000/03/21 21:54:51 ericj Exp $"; +static char rcsid[] = "$OpenBSD: who.c,v 1.9 2000/03/22 17:07:37 millert Exp $"; #endif /* not lint */ #include #include +#include #include #include #include @@ -116,13 +117,6 @@ main(argc, argv) only_current_term = show_term = show_idle = show_labels = 0; } - if (show_term || show_idle) { - if (chdir("/dev")) { - err(1, "cannot change directory to /dev"); - /* NOTREACHED */ - } - } - if (show_labels) output_labels(); @@ -225,7 +219,7 @@ output(up) struct utmp *up; { struct stat sb; - char line[sizeof (up->ut_line) + 1]; + char line[sizeof(_PATH_DEV) + sizeof (up->ut_line)]; char state = '?'; static time_t now = 0; time_t idle = 0; @@ -234,8 +228,8 @@ output(up) if (now == 0) time(&now); - strncpy(line, up->ut_line, sizeof (up->ut_line)); - line[sizeof (up->ut_line)] = '\0'; + strcpy(line, _PATH_DEV); + strncat(line, up->ut_line, sizeof (up->ut_line)); if (stat(line, &sb) == 0) { state = (sb.st_mode & 020) ? '+' : '-';