From: Chris Allegretta Date: Fri, 26 Jan 2001 01:57:32 +0000 (+0000) Subject: Fixed Bug #53 X-Git-Tag: v0.9.99pre2~6 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=169ee8498e23fc1904563f03e06137cbf342bbdf;p=nano.git Fixed Bug #53 git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@506 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/BUGS b/BUGS index 154750bf..af23fd51 100644 --- a/BUGS +++ b/BUGS @@ -85,6 +85,8 @@ current line to the top of the screen, which it shouldn't do. (50) [FIXED] - with PDCURSES, running meta-X turns off the keypad. (51) [FIXED] +- Alt speller argument (-s, --speller) does not take a string argument of + more than one word. (53) [FIXED]. ** Open BUGS ** @@ -95,7 +97,5 @@ - Resizing the window completely screws up the display if in any other mode than normal editing (help screen, search and replace, file browser..) (52) -- Alt speller argument (-s, --speller) does not take a string argument of - more than one word. (53). $Id$ diff --git a/ChangeLog b/ChangeLog index 0455f8b0..5465a5a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,8 @@ General - Add arg to -T help (Rocco). global_init(), handle_sigwinch() - Messy loops replaced with memset calls (Rocco). + do_alt_speller() + - Added code to parse multi-word alt_speller strings. nano 0.9.99pre1 - 01/17/2001 General diff --git a/nano.c b/nano.c index a170b23f..6df7ced9 100644 --- a/nano.c +++ b/nano.c @@ -1316,6 +1316,9 @@ int do_alt_speller(char *file_name) { int alt_spell_status; pid_t pid_spell; + char *ptr; + static int arglen = 3; + static char **spellargs = (char **) NULL; endwin(); @@ -1323,8 +1326,22 @@ int do_alt_speller(char *file_name) if ( (pid_spell = fork()) == 0) { + /* Set up an argument list to pass the execvp function */ + if (spellargs == NULL) { + spellargs = nmalloc(arglen * sizeof(char *)); + + spellargs[0] = strtok(alt_speller, " "); + while ((ptr = strtok(NULL, " ")) != NULL) { + arglen++; + spellargs = nrealloc(spellargs, arglen * sizeof(char *)); + spellargs[arglen - 3] = ptr; + } + spellargs[arglen - 1] = NULL; + } + spellargs[arglen - 2] = file_name; + /* Start alternate spell program, we are using the PATH here!?!? */ - execlp(alt_speller, alt_speller, file_name, NULL); + execvp(spellargs[0], spellargs); /* Should not be reached, if alternate speller is found!!! */