summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUbaldo Porcheddu <ubaldo@eja.it>2016-02-20 22:18:37 +0000
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-02-24 22:17:10 +0100
commit75d8660d99f1b5b5da471569955ffce9a27e8702 (patch)
treefaa0f4bd0ff400c88fd77ee54f8fddafe30e3a2b
parente63d716d4b39402294a5f5fbb34e17e094f17748 (diff)
Replaced any occurence of /bin/sh with _PATH_BSHELL to allow easier portability on system with default shell on a different directory, like for instance on android.
Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
-rw-r--r--libc/stdio/popen.c3
-rw-r--r--libc/stdlib/system.c7
-rw-r--r--libc/unistd/exec.c5
3 files changed, 9 insertions, 6 deletions
diff --git a/libc/stdio/popen.c b/libc/stdio/popen.c
index e1b1d4038..1efbd3b7a 100644
--- a/libc/stdio/popen.c
+++ b/libc/stdio/popen.c
@@ -17,6 +17,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <paths.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
@@ -91,7 +92,7 @@ FILE *popen(const char *command, const char *modes)
close(po->f->__filedes);
}
- execl("/bin/sh", "sh", "-c", command, (char *)0);
+ execl(_PATH_BSHELL, "sh", "-c", command, (char *)0);
/* SUSv3 mandates an exit code of 127 for the child if the
* command interpreter can not be invoked. */
diff --git a/libc/stdlib/system.c b/libc/stdlib/system.c
index 8a6734db7..771c30e3f 100644
--- a/libc/stdlib/system.c
+++ b/libc/stdlib/system.c
@@ -11,6 +11,7 @@
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
+#include <paths.h>
#ifdef __UCLIBC_HAS_THREADS_NATIVE__
#include <sched.h>
#include <errno.h>
@@ -50,7 +51,7 @@ int __libc_system(const char *command)
sigaction(SIGINT, &save_int, NULL);
sigprocmask(SIG_SETMASK, &save_mask, NULL);
- execl("/bin/sh", "sh", "-c", command, (char *) 0);
+ execl(_PATH_BSHELL, "sh", "-c", command, (char *) 0);
_exit(127);
}
@@ -169,7 +170,7 @@ do_system (const char *line)
{
/* Child side. */
const char *new_argv[4];
- new_argv[0] = "/bin/sh";
+ new_argv[0] = _PATH_BSHELL;
new_argv[1] = "-c";
new_argv[2] = line;
new_argv[3] = NULL;
@@ -181,7 +182,7 @@ do_system (const char *line)
INIT_LOCK ();
/* Exec the shell. */
- (void) execve ("/bin/sh", (char *const *) new_argv, __environ);
+ (void) execve (_PATH_BSHELL, (char *const *) new_argv, __environ);
_exit (127);
}
else if (pid < (pid_t) 0)
diff --git a/libc/unistd/exec.c b/libc/unistd/exec.c
index 8fa42e586..9be856d4f 100644
--- a/libc/unistd/exec.c
+++ b/libc/unistd/exec.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <paths.h>
#include <string.h>
#include <errno.h>
#include <stdarg.h>
@@ -273,9 +274,9 @@ int execvpe(const char *path, char *const argv[], char *const envp[])
nargv[1] = (char *)path;
memcpy(nargv+2, argv+1, n*sizeof(char *));
#if defined (L_execvp)
- execve("/bin/sh", nargv, __environ);
+ execve(_PATH_BSHELL, nargv, __environ);
#elif defined (L_execvpe)
- execve("/bin/sh", nargv, envp);
+ execve(_PATH_BSHELL, nargv, envp);
#endif
EXEC_FREE(nargv, size2);
}