| #include <stdarg.h> | |
| #include <unistd.h> | |
| int execl(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]; | |
| va_start(ap, argv0); | |
| argv[0] = (char*)argv0; | |
| for (i = 1; i < argc; i++) | |
| argv[i] = va_arg(ap, char*); | |
| argv[i] = NULL; | |
| va_end(ap); | |
| return execv(path, argv); | |
| } | |
| } |