diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-10-31 03:04:55 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-10-31 03:04:55 +0000 |
commit | 64974793b9fe0921c43e604de747caf7d32f671c (patch) | |
tree | 7df226f3206f2c35378b6594d5dcf5376de4bc46 /miscutils/less.c | |
parent | 028eab61bc44f34f27a4fb5cae03b5b6460b024d (diff) | |
download | busybox-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.c | 16 |
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; |