commit 169ee8498e23fc1904563f03e06137cbf342bbdf
parent 12de5ca7cf84f19edfd983aad0b02328e0f19fda
Author: Chris Allegretta <chrisa@asty.org>
Date: Fri, 26 Jan 2001 01:57:32 +0000
Fixed Bug #53
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@506 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git 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
@@ -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
@@ -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!!! */