aboutsummaryrefslogtreecommitdiff
path: root/miscutils/less.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-10-31 03:04:55 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-10-31 03:04:55 +0000
commit64974793b9fe0921c43e604de747caf7d32f671c (patch)
tree7df226f3206f2c35378b6594d5dcf5376de4bc46 /miscutils/less.c
parent028eab61bc44f34f27a4fb5cae03b5b6460b024d (diff)
downloadbusybox-w32-64974793b9fe0921c43e604de747caf7d32f671c.tar.gz
busybox-w32-64974793b9fe0921c43e604de747caf7d32f671c.tar.bz2
busybox-w32-64974793b9fe0921c43e604de747caf7d32f671c.zip
less: fix newly-introduced case of less spinning forever
on pty's closed etc
Diffstat (limited to 'miscutils/less.c')
-rw-r--r--miscutils/less.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/miscutils/less.c b/miscutils/less.c
index b5d225a12..6c793ad8b 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -853,12 +853,16 @@ static ssize_t getch_nowait(void)
853 /* We have kbd_fd in O_NONBLOCK mode, read inside read_key() 853 /* We have kbd_fd in O_NONBLOCK mode, read inside read_key()
854 * would not block even if there is no input available */ 854 * would not block even if there is no input available */
855 rd = read_key(kbd_fd, NULL, input); 855 rd = read_key(kbd_fd, NULL, input);
856 if (rd == -1 && errno == EAGAIN) { 856 if (rd == -1) {
857 /* No keyboard input available. Since poll() did return, 857 if (errno == EAGAIN) {
858 * we should have input on stdin */ 858 /* No keyboard input available. Since poll() did return,
859 read_lines(); 859 * we should have input on stdin */
860 buffer_fill_and_print(); 860 read_lines();
861 goto again; 861 buffer_fill_and_print();
862 goto again;
863 }
864 /* EOF/error (ssh session got killed etc) */
865 less_exit(0);
862 } 866 }
863 set_tty_cooked(); 867 set_tty_cooked();
864 return rd; 868 return rd;