diff options
Diffstat (limited to 'usr.bin/w/w.c')
-rw-r--r-- | usr.bin/w/w.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index 0ead030..6ab256a 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -134,6 +134,7 @@ main(argc, argv) struct stat *stp; FILE *ut; u_long l; + time_t touched; int ch, i, nentries, nusers, wcmd, longidle, dropgid; char *memf, *nlistf, *p, *x; char buf[MAXHOSTNAMELEN], errbuf[256]; @@ -246,7 +247,12 @@ main(argc, argv) (void)sysctl(mib, 2, &ep->tdev, &size, NULL, 0); } #endif - if ((ep->idle = now - stp->st_atime) < 0) + touched = stp->st_atime; + if (touched < ep->utmp.ut_time) { + /* tty untouched since before login */ + touched = ep->utmp.ut_time; + } + if ((ep->idle = now - touched) < 0) ep->idle = 0; } (void)fclose(ut); |