fix resizing while the alternate spell checker is running

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2935 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2005-07-25 23:40:12 +00:00
parent 3f12ada4ef
commit 4401862e12
2 changed files with 16 additions and 0 deletions

View File

@ -173,6 +173,10 @@ CVS code -
no longer needed, and make the error message more similar to no longer needed, and make the error message more similar to
what the internal spell checker returns under the same what the internal spell checker returns under the same
circumstances. (DLR) circumstances. (DLR)
- Set the SIGWINCH handler back to the default just before
running the alternate spell checker, so that the alternate
spell checker can handle them, and set it back afterwards.
(DLR)
do_spell() do_spell()
- When displaying an error message from do_(int|alt)_speller(), - When displaying an error message from do_(int|alt)_speller(),
don't display the error message corresponding to errno if don't display the error message corresponding to errno if

View File

@ -1846,6 +1846,8 @@ const char *do_alt_speller(char *tempfile_name)
size_t totsize_save = openfile->totsize; size_t totsize_save = openfile->totsize;
/* Our saved value of totsize, used when we spell-check a marked /* Our saved value of totsize, used when we spell-check a marked
* selection. */ * selection. */
struct sigaction newaction, oldaction;
/* Original and temporary handlers for SIGWINCH. */
if (old_mark_set) { if (old_mark_set) {
/* If the mark is on, save the number of the line it starts on, /* If the mark is on, save the number of the line it starts on,
@ -1872,6 +1874,13 @@ const char *do_alt_speller(char *tempfile_name)
} }
spellargs[arglen - 2] = tempfile_name; spellargs[arglen - 2] = tempfile_name;
/* Save the original SIGWINCH handler, and set the SIGWINCH handler
* back to the default, so that the alternate spell checker can
* handle a SIGWINCH its own way. */
sigaction(SIGWINCH, NULL, &newaction);
newaction.sa_handler = SIG_DFL;
sigaction(SIGWINCH, &newaction, &oldaction);
/* Start a new process for the alternate speller. */ /* Start a new process for the alternate speller. */
if ((pid_spell = fork()) == 0) { if ((pid_spell = fork()) == 0) {
/* Start alternate spell program; we are using PATH. */ /* Start alternate spell program; we are using PATH. */
@ -1888,6 +1897,9 @@ const char *do_alt_speller(char *tempfile_name)
/* Wait for alternate speller to complete. */ /* Wait for alternate speller to complete. */
wait(&alt_spell_status); wait(&alt_spell_status);
/* Set the SIGWINCH handler back to the original. */
sigaction(SIGWINCH, &oldaction, NULL);
refresh(); refresh();
/* Restore the terminal to its previous state. */ /* Restore the terminal to its previous state. */