Blame


1 48bfee4e 2005-01-04 devnull #include <u.h>
2 48bfee4e 2005-01-04 devnull #include <libc.h>
3 48bfee4e 2005-01-04 devnull
4 48bfee4e 2005-01-04 devnull int
5 48bfee4e 2005-01-04 devnull execl(char *prog, ...)
6 48bfee4e 2005-01-04 devnull {
7 48bfee4e 2005-01-04 devnull int i;
8 48bfee4e 2005-01-04 devnull va_list arg;
9 48bfee4e 2005-01-04 devnull char **argv;
10 48bfee4e 2005-01-04 devnull
11 48bfee4e 2005-01-04 devnull va_start(arg, prog);
12 48bfee4e 2005-01-04 devnull for(i=0; va_arg(arg, char*) != nil; i++)
13 48bfee4e 2005-01-04 devnull ;
14 48bfee4e 2005-01-04 devnull va_end(arg);
15 48bfee4e 2005-01-04 devnull
16 48bfee4e 2005-01-04 devnull argv = malloc((i+1)*sizeof(char*));
17 48bfee4e 2005-01-04 devnull if(argv == nil)
18 48bfee4e 2005-01-04 devnull return -1;
19 48bfee4e 2005-01-04 devnull
20 48bfee4e 2005-01-04 devnull va_start(arg, prog);
21 48bfee4e 2005-01-04 devnull for(i=0; (argv[i] = va_arg(arg, char*)) != nil; i++)
22 48bfee4e 2005-01-04 devnull ;
23 48bfee4e 2005-01-04 devnull va_end(arg);
24 48bfee4e 2005-01-04 devnull
25 48bfee4e 2005-01-04 devnull exec(prog, argv);
26 48bfee4e 2005-01-04 devnull free(argv);
27 48bfee4e 2005-01-04 devnull return -1;
28 48bfee4e 2005-01-04 devnull }