mirror of git://git.sv.gnu.org/nano.git
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
This commit is contained in:
parent
ec8a055ffd
commit
9b33d51774
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
12
src/winio.c
12
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue