summaryrefslogtreecommitdiffstats
path: root/usr.bin/systat
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/systat')
-rw-r--r--usr.bin/systat/keyboard.c11
-rw-r--r--usr.bin/systat/main.c1
2 files changed, 8 insertions, 4 deletions
diff --git a/usr.bin/systat/keyboard.c b/usr.bin/systat/keyboard.c
index 7784f5b..0ab28eb 100644
--- a/usr.bin/systat/keyboard.c
+++ b/usr.bin/systat/keyboard.c
@@ -39,8 +39,10 @@ __FBSDID("$FreeBSD$");
static const char sccsid[] = "@(#)keyboard.c 8.1 (Berkeley) 6/6/93";
#endif
+#include <errno.h>
#include <ctype.h>
#include <signal.h>
+#include <stdlib.h>
#include <termios.h>
#include "systat.h"
@@ -57,10 +59,11 @@ keyboard(void)
move(CMDLINE, 0);
do {
refresh();
- ch = getch() & 0177;
- if (ch == 0177 && ferror(stdin)) {
- clearerr(stdin);
- continue;
+ ch = getch();
+ if (ch == ERR) {
+ if (errno == EINTR)
+ continue;
+ exit(1);
}
if (ch >= 'A' && ch <= 'Z')
ch += 'a' - 'A';
diff --git a/usr.bin/systat/main.c b/usr.bin/systat/main.c
index 28673e5..6f6b994 100644
--- a/usr.bin/systat/main.c
+++ b/usr.bin/systat/main.c
@@ -133,6 +133,7 @@ main(int argc, char **argv)
exit(1);
}
}
+ signal(SIGHUP, die);
signal(SIGINT, die);
signal(SIGQUIT, die);
signal(SIGTERM, die);
OpenPOWER on IntegriCloud