[[email protected]: w/uptime warning inappropriately under xdm/kdm [patch]...]

Sean Chittenden <[email protected]> Fri, 16 Aug 2002 11:36:44 -0700
Newsgroups gmane.os.freebsd.devel.audit
Message-ID <[email protected]>
[This is a repost from a current@ posting]

When logging into a system via xdm/kdm, the wtmp/utmp entries aren't
being set correctly.  As a result, when you call w(1), you get a nice
pair of warnings:

$ w
w: /dev/:0: No such file or directory
w: /dev/:0: No such file or directory
11:33AM  up 5 days, 17:02, 0 users, load averages: 0.08, 0.07, 0.08
USER             TTY      FROM              LOGIN@  IDLE WHAT

The attached (tiny) patch suppresses the warning and deals with it in
the same way that who(1) does.  -sc


-- 
Sean Chittenden

I've switched one of my desktops to using kdm and I've noticed that
w(1) creates suprious warnings because it can't find the tty entry.

$ w
w: /dev/:0: No such file or directory
w: /dev/:0: No such file or directory
 2:41AM  up 49 mins, 0 users, load averages: 0.05, 0.04, 0.04
USER             TTY      FROM              LOGIN@  IDLE WHAT
$ 

I've included a patch that quiets this.  The attached patch is inline
with the behavior from who(1).  Are there any objections to it?  What
should be the correct behaviour when loggin in via xdm/kdm?  Is there
a better way to detect that you're logged in via xdm/kdm?  Should w(1)
iterate through utmp/wtmp to get user info?  -sc

-- 
Sean Chittenden
patch (text/plain, 513 B)
Index: w.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/w/w.c,v
retrieving revision 1.54
diff -u -r1.54 w.c
--- w.c	2002/06/07 01:41:54	1.54
+++ w.c	2002/08/09 09:57:17
@@ -491,11 +491,10 @@
 	char ttybuf[MAXPATHLEN];
 
 	(void)snprintf(ttybuf, sizeof(ttybuf), "%s%.*s", _PATH_DEV, sz, line);
-	if (stat(ttybuf, &sb)) {
-		warn("%s", ttybuf);
+	if (stat(ttybuf, &sb) == 0) {
+		return (&sb);
+	} else
 		return (NULL);
-	}
-	return (&sb);
 }
 
 static void