diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/exec_lib.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/exec_lib.c | 20 |
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); + } +} + |