summaryrefslogtreecommitdiff
path: root/source/n/bsd-finger/bsd-finger-0.17-utmp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/n/bsd-finger/bsd-finger-0.17-utmp.patch')
-rw-r--r--source/n/bsd-finger/bsd-finger-0.17-utmp.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/source/n/bsd-finger/bsd-finger-0.17-utmp.patch b/source/n/bsd-finger/bsd-finger-0.17-utmp.patch
new file mode 100644
index 00000000..ac73f2be
--- /dev/null
+++ b/source/n/bsd-finger/bsd-finger-0.17-utmp.patch
@@ -0,0 +1,40 @@
+--- bsd-finger-0.17/finger/finger.c.utmp 2004-06-15 11:38:24.000000000 -0400
++++ bsd-finger-0.17/finger/finger.c 2004-06-15 12:22:15.000000000 -0400
+@@ -75,6 +75,8 @@
+ #include <limits.h>
+ #include <time.h>
+ #include <getopt.h>
++#include <signal.h>
++#include <errno.h>
+ #include "finger.h"
+ #ifdef _USAGI
+ #include "version.h"
+@@ -224,6 +226,8 @@
+ #ifdef USER_PROCESS
+ if (uptr->ut_type != USER_PROCESS) continue;
+ #endif
++ if (kill(uptr->ut_pid, 0) < 0 && errno == ESRCH)
++ continue;
+ if ((pn = find_person(uptr->ut_name)) == NULL) {
+ memcpy(name, uptr->ut_name, UT_NAMESIZE);
+ if ((pw = getpwnam(name)) == NULL)
+@@ -331,6 +335,8 @@
+ #ifdef USER_PROCESS
+ if (uptr->ut_type != USER_PROCESS) continue;
+ #endif
++ if (kill(uptr->ut_pid, 0) < 0 && errno == ESRCH)
++ continue;
+ if ((pn = find_person(uptr->ut_name)) == NULL) {
+ continue;
+ }
+--- bsd-finger-0.17/finger/util.c.utmp 2004-06-15 11:38:24.000000000 -0400
++++ bsd-finger-0.17/finger/util.c 2004-06-15 11:38:24.000000000 -0400
+@@ -71,6 +71,8 @@
+ }
+ snprintf(tbuf, TBUFLEN, "%s/%s", _PATH_DEV, w->tty);
+ if (stat(tbuf, &sb) < 0) {
++ w->idletime = 0; /* No tty no write, no idle data */
++ w->writable = 0;
+ switch (errno) {
+ case ENOENT:
+ break;