top: do not touch stdin if -b

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2012-09-26 16:58:25 +02:00
parent 06a98e32ae
commit 73a1990897

View File

@ -717,6 +717,7 @@ static void clearmems(void)
static void reset_term(void)
{
if (!OPT_BATCH_MODE)
tcsetattr_stdin_TCSANOW(&initial_settings);
if (ENABLE_FEATURE_CLEAN_UP) {
clearmems();
@ -729,7 +730,7 @@ static void reset_term(void)
static void sig_catcher(int sig UNUSED_PARAM)
{
reset_term();
_exit(EXIT_FAILURE);
kill_myself_with_sig(sig);
}
#endif /* FEATURE_USE_TERMIOS */
@ -919,6 +920,12 @@ static unsigned handle_input(unsigned scan_mask, unsigned interval)
{
struct pollfd pfd[1];
if (option_mask32 & OPT_EOF) {
/* EOF on stdin ("top </dev/null") */
sleep(interval);
return scan_mask;
}
pfd[0].fd = 0;
pfd[0].events = POLLIN;
@ -1154,10 +1161,13 @@ int top_main(int argc UNUSED_PARAM, char **argv)
sort_function[0] = mem_sort;
#endif
if (OPT_BATCH_MODE) {
option_mask32 |= OPT_EOF;
}
#if ENABLE_FEATURE_USE_TERMIOS
else {
tcgetattr(0, (void *) &initial_settings);
memcpy(&new_settings, &initial_settings, sizeof(new_settings));
if (!OPT_BATCH_MODE) {
/* unbuffered input, turn off echo */
new_settings.c_lflag &= ~(ISIG | ICANON | ECHO | ECHONL);
tcsetattr_stdin_TCSANOW(&new_settings);
@ -1269,10 +1279,6 @@ int top_main(int argc UNUSED_PARAM, char **argv)
#if !ENABLE_FEATURE_USE_TERMIOS
sleep(interval);
#else
if (option_mask32 & OPT_EOF)
/* EOF on stdin ("top </dev/null") */
sleep(interval);
else
scan_mask = handle_input(scan_mask, interval);
#endif /* FEATURE_USE_TERMIOS */
} /* end of "while (not Q)" */