diff --git a/BUGS b/BUGS index 154750bf5b9c6d0b8101ba47d119aba9c4908ee1..af23fd513b98fe5f2a0dd1b1af79b391dcdfcd9d 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 0455f8b050dfd24b1c3313ea4271b9d66fc8de7d..5465a5a67bf45cee2c66444d2442a090162ac3f3 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 a170b23fda2bf59597e00923052aa989574e97f2..6df7ced9c492661261a6240bfe61aae423a3ff32 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!!! */