summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/exec_lib.c
blob: 3129224a0c9330546b4fecb71ec6b319042421d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
  }
}