xref: /plan9/sys/src/cmd/9nfs/system.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 #include <u.h>
2 #include <libc.h>
3 
4 Waitmsg*
system(char * name,char ** argv)5 system(char *name, char **argv)
6 {
7 	char err[ERRMAX];
8 	Waitmsg *w;
9 	int pid;
10 
11 	switch(pid = fork()){	/* assign = */
12 	case -1:
13 		return nil;
14 	case 0:
15 		exec(name, argv);
16 		errstr(err, sizeof err);
17 		_exits(err);
18 	}
19 	for(;;){
20 		w = wait();
21 		if(w == nil)
22 			break;
23 		if(w->pid == pid)
24 			return w;
25 		free(w);
26 	}
27 	return nil;
28 }
29 
30 Waitmsg*
systeml(char * name,...)31 systeml(char *name, ...)
32 {
33 	return system(name, &name+1);
34 }
35