1*c9945492SAndroid Build Coastguard Worker #include <unistd.h>
2*c9945492SAndroid Build Coastguard Worker #include <stdarg.h>
3*c9945492SAndroid Build Coastguard Worker
execle(const char * path,const char * argv0,...)4*c9945492SAndroid Build Coastguard Worker int execle(const char *path, const char *argv0, ...)
5*c9945492SAndroid Build Coastguard Worker {
6*c9945492SAndroid Build Coastguard Worker int argc;
7*c9945492SAndroid Build Coastguard Worker va_list ap;
8*c9945492SAndroid Build Coastguard Worker va_start(ap, argv0);
9*c9945492SAndroid Build Coastguard Worker for (argc=1; va_arg(ap, const char *); argc++);
10*c9945492SAndroid Build Coastguard Worker va_end(ap);
11*c9945492SAndroid Build Coastguard Worker {
12*c9945492SAndroid Build Coastguard Worker int i;
13*c9945492SAndroid Build Coastguard Worker char *argv[argc+1];
14*c9945492SAndroid Build Coastguard Worker char **envp;
15*c9945492SAndroid Build Coastguard Worker va_start(ap, argv0);
16*c9945492SAndroid Build Coastguard Worker argv[0] = (char *)argv0;
17*c9945492SAndroid Build Coastguard Worker for (i=1; i<=argc; i++)
18*c9945492SAndroid Build Coastguard Worker argv[i] = va_arg(ap, char *);
19*c9945492SAndroid Build Coastguard Worker envp = va_arg(ap, char **);
20*c9945492SAndroid Build Coastguard Worker va_end(ap);
21*c9945492SAndroid Build Coastguard Worker return execve(path, argv, envp);
22*c9945492SAndroid Build Coastguard Worker }
23*c9945492SAndroid Build Coastguard Worker }
24