| #include <unistd.h> | |
| #include <stdarg.h> | |
| int execle(const char *path, const char *argv0, ...) | |
| { | |
| int argc; | |
| va_list ap; | |
| va_start(ap, argv0); | |
| for (argc=1; va_arg(ap, const char *); argc++); | |
| va_end(ap); | |
| { | |
| int i; | |
| char *argv[argc+1]; | |
| char **envp; | |
| va_start(ap, argv0); | |
| argv[0] = (char *)argv0; | |
| for (i=1; i<=argc; i++) | |
| argv[i] = va_arg(ap, char *); | |
| envp = va_arg(ap, char **); | |
| va_end(ap); | |
| return execve(path, argv, envp); | |
| } | |
| } |