]> git.wh0rd.org Git - nano.git/commitdiff
in execute_command(), instead of hardcoding /bin/sh as the shell to use
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 29 Nov 2005 05:21:06 +0000 (05:21 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 29 Nov 2005 05:21:06 +0000 (05:21 +0000)
when executing a command, use $SHELL, and only fall back to /bin/sh if
$SHELL isn't set

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3220 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/text.c

index e7ddb7e5c5e0aff25bc8037b4703bb7fc179fbe6..c47f58fdee0e09bdbd9cfb9577ed17d28d10455f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -185,6 +185,10 @@ CVS code -
        - Only include the whole_word parameter when DISABLE_SPELLER
          isn't defined, as it's only used then. (DLR)
 - text.c:
+  execute_command()
+       - Instead of hardcoding /bin/sh as the shell to use when
+         executing a command, use $SHELL, and only fall back to /bin/sh
+         if $SHELL isn't set. (DLR)
   do_wrap()
        - Rename variable wrapping to prepending, to avoid confusion,
          and rename the static bool same_line_wrap to prepend_wrap to
index 67db002a4b818d07037abef69fe91fb6eabca244..3af8794810ad406d217cc499fad9c6566c1e37e3 100644 (file)
@@ -271,12 +271,20 @@ bool execute_command(const char *command)
 
     /* Fork a child. */
     if ((pid = fork()) == 0) {
+       char *shellenv;
+
        close(fd[0]);
        dup2(fd[1], fileno(stdout));
        dup2(fd[1], fileno(stderr));
 
+       /* Check $SHELL for the shell to use.  If it isn't set, use
+        * /bin/sh. */
+       shellenv = getenv("SHELL");
+       if (shellenv == NULL)
+           shellenv = "/bin/sh";
+
        /* If execl() returns at all, there was an error. */
-       execl("/bin/sh", "sh", "-c", command, NULL);
+       execl(shellenv, tail(shellenv), "-c", command, NULL);
        exit(0);
     }