summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/exec_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/lib/exec_lib.c')
-rw-r--r--mdk-stage1/dietlibc/lib/exec_lib.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/exec_lib.c b/mdk-stage1/dietlibc/lib/exec_lib.c
new file mode 100644
index 000000000..3129224a0
--- /dev/null
+++ b/mdk-stage1/dietlibc/lib/exec_lib.c
@@ -0,0 +1,20 @@
+#include <unistd.h>
+#include <paths.h>
+
+extern char **environ;
+
+int __exec_shell(const char *file, char *const argv[]) {
+ int i;
+
+ for (i = 0; argv[i]; i++);
+
+ {
+ char *shell_argv[i + 1];
+ shell_argv[0] = _PATH_BSHELL;
+ shell_argv[1] = (char *) file;
+ for (; i > 1; i--)
+ shell_argv[i] = argv[i - 1];
+ return execve(_PATH_BSHELL, shell_argv, environ);
+ }
+}
+