xref: /aosp_15_r20/external/musl/src/process/execle.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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