]> git.wh0rd.org Git - nano.git/commitdiff
Fixed Bug #53
authorChris Allegretta <chrisa@asty.org>
Fri, 26 Jan 2001 01:57:32 +0000 (01:57 +0000)
committerChris Allegretta <chrisa@asty.org>
Fri, 26 Jan 2001 01:57:32 +0000 (01:57 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@506 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

BUGS
ChangeLog
nano.c

diff --git a/BUGS b/BUGS
index 154750bf5b9c6d0b8101ba47d119aba9c4908ee1..af23fd513b98fe5f2a0dd1b1af79b391dcdfcd9d 100644 (file)
--- 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$
index 0455f8b050dfd24b1c3313ea4271b9d66fc8de7d..5465a5a67bf45cee2c66444d2442a090162ac3f3 100644 (file)
--- 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 (file)
--- 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!!! */