From 64974793b9fe0921c43e604de747caf7d32f671c Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 31 Oct 2008 03:04:55 +0000 Subject: less: fix newly-introduced case of less spinning forever on pty's closed etc --- miscutils/less.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'miscutils') diff --git a/miscutils/less.c b/miscutils/less.c index b5d225a..6c793ad 100644 --- a/miscutils/less.c +++ b/miscutils/less.c @@ -853,12 +853,16 @@ static ssize_t getch_nowait(void) /* We have kbd_fd in O_NONBLOCK mode, read inside read_key() * would not block even if there is no input available */ rd = read_key(kbd_fd, NULL, input); - if (rd == -1 && errno == EAGAIN) { - /* No keyboard input available. Since poll() did return, - * we should have input on stdin */ - read_lines(); - buffer_fill_and_print(); - goto again; + if (rd == -1) { + if (errno == EAGAIN) { + /* No keyboard input available. Since poll() did return, + * we should have input on stdin */ + read_lines(); + buffer_fill_and_print(); + goto again; + } + /* EOF/error (ssh session got killed etc) */ + less_exit(0); } set_tty_cooked(); return rd; -- cgit v1.1