nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 9b33d5177414c8b96f52c1cf25bbd6d6d981393a
parent ec8a055ffd36c9546db1d770ae1ad44639ec99e1
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date:   Mon, 20 Mar 2006 04:46:48 +0000

in get_key_buffer(), simplify the check for a lost input source, since
the errno check is unreliable


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3311 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

Diffstat:
MChangeLog | 3++-
Msrc/nano.c | 8++++----
Msrc/winio.c | 12++++++------
3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -63,7 +63,8 @@ CVS code - row, hang up regardless of the value of errno. This fixes a problem where nano doesn't terminate properly under xterm if the user su's to root, runs nano, and then closes the terminal - window. (DLR, found by John <acocaracha@gmail.com>) + window. errno isn't set properly to EIO then. (DLR, found by + John <acocaracha@gmail.com>) parse_kbinput() - Interpret Shift-Begin, Shift-Delete, Shift-End, Shift-Home, Shift-Insert, and Shift-Suspend as Begin, Delete, End, Home, diff --git a/src/nano.c b/src/nano.c @@ -1044,10 +1044,10 @@ RETSIGTYPE handle_sigwinch(int signal) if (result == -1) return; - /* Could check whether the COLS or LINES changed, and return - * otherwise. EXCEPT, that COLS and LINES are ncurses global - * variables, and in some cases ncurses has already updated them. - * But not in all cases, argh. */ + /* We could check whether the COLS or LINES changed, and return + * otherwise. However, COLS and LINES are curses global variables, + * and in some cases curses has already updated them. But not in + * all cases. Argh. */ COLS = win.ws_col; LINES = win.ws_row; diff --git a/src/winio.c b/src/winio.c @@ -142,12 +142,12 @@ void get_key_buffer(WINDOW *win) while ((input = wgetch(win)) == ERR) { errcount++; - /* If errno is EIO, it means that the input source that we were - * using is gone, so die gracefully. If we've failed to get a - * character over MAX_BUF_SIZE times in a row, it can mean the - * same thing regardless of the value of errno, so die - * gracefully then too. */ - if (errno == EIO || errcount > MAX_BUF_SIZE) + /* If we've failed to get a character over MAX_BUF_SIZE times in + * a row, assume that the input source we were using is gone and + * die gracefully. We could check if errno is set to EIO + * ("Input/output error") and die gracefully in that case, but + * it's not always set properly. Argh. */ + if (errcount > MAX_BUF_SIZE) handle_hupterm(0); }