20 lines
1 KiB
Diff
20 lines
1 KiB
Diff
Description: Check for stdin eof if term
|
|
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
|
|
Bug-Debian: http://bugs.debian.org/458986
|
|
Reviewed-by: Craig Small <csmall@debian.org>
|
|
Index: b/top.c
|
|
===================================================================
|
|
--- a/top.c 2009-11-24 21:00:34.000000000 +1100
|
|
+++ b/top.c 2009-11-24 21:00:35.000000000 +1100
|
|
@@ -3408,9 +3408,8 @@
|
|
// check 1st, in case tv zeroed (by sig handler) before it got set
|
|
rc = chin(0, &c, 1);
|
|
if (rc <= 0) {
|
|
- // EOF is pretty much a "can't happen" except for a kernel bug.
|
|
- // We should quickly die via SIGHUP, and thus not spin here.
|
|
- // if (rc == 0) end_pgm(0); /* EOF from terminal */
|
|
+ if (rc == 0) end_pgm(0); /* EOF from terminal, may happen if top
|
|
+ * erroneously gets detached from it. */
|
|
fcntl(STDIN_FILENO, F_SETFL, file_flags);
|
|
select(1, &fs, NULL, NULL, &tv);
|
|
fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK|file_flags);
|