in 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


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3220 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2005-11-29 05:21:06 +00:00
parent da1f55cec7
commit 5da68ee193
2 changed files with 13 additions and 1 deletions

View File

@ -185,6 +185,10 @@ CVS code -
- Only include the whole_word parameter when DISABLE_SPELLER - Only include the whole_word parameter when DISABLE_SPELLER
isn't defined, as it's only used then. (DLR) isn't defined, as it's only used then. (DLR)
- text.c: - 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() do_wrap()
- Rename variable wrapping to prepending, to avoid confusion, - Rename variable wrapping to prepending, to avoid confusion,
and rename the static bool same_line_wrap to prepend_wrap to and rename the static bool same_line_wrap to prepend_wrap to

View File

@ -271,12 +271,20 @@ bool execute_command(const char *command)
/* Fork a child. */ /* Fork a child. */
if ((pid = fork()) == 0) { if ((pid = fork()) == 0) {
char *shellenv;
close(fd[0]); close(fd[0]);
dup2(fd[1], fileno(stdout)); dup2(fd[1], fileno(stdout));
dup2(fd[1], fileno(stderr)); 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. */ /* 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); exit(0);
} }