From 2650f9ea1495350c4d4c119e172b59ab1af10ad4 Mon Sep 17 00:00:00 2001 From: dwmalone Date: Sun, 4 Nov 2001 21:15:52 +0000 Subject: Make top exit if its tty vanishes. PR: 30939, 30581 Submitted by: Edwin Groothuis Submitted by: Andrew L. Neporada MFC after: 2 weeks --- contrib/top/top.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'contrib/top') diff --git a/contrib/top/top.c b/contrib/top/top.c index ef1d47f..9b9b2b2 100644 --- a/contrib/top/top.c +++ b/contrib/top/top.c @@ -32,6 +32,7 @@ char *copyright = */ #include "os.h" +#include #include #include #include @@ -157,6 +158,7 @@ char *argv[]; int topn = Default_TOPN; int delay = Default_DELAY; int displays = 0; /* indicates unspecified */ + int sel_ret = 0; time_t curr_time; char *(*get_userid)() = username; char *uname_field = "USERNAME"; @@ -711,7 +713,10 @@ restart: } /* wait for either input or the end of the delay period */ - if (select(32, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timeout) > 0) + sel_ret = select(2, &readfds, NULL, NULL, &timeout); + if (sel_ret < 0 && errno != EINTR) + quit(0); + if (sel_ret > 0) { int newval; char *errmsg; @@ -721,7 +726,8 @@ restart: /* now read it and convert to command strchr */ /* (use "change" as a temporary to hold strchr) */ - (void) read(0, &ch, 1); + if (read(0, &ch, 1) != 1) + quit(0); if ((iptr = strchr(command_chars, ch)) == NULL) { if (ch != '\r' && ch != '\n') -- cgit v1.1