xref: /plan9/sys/src/cmd/9nfs/system.c (revision a84536681645e23c630ce4ef2e5c3b284d4c590b)
1 #include <u.h>
2 #include <libc.h>
3 
4 Waitmsg*
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*
31 systeml(char *name, ...)
32 {
33 	return system(name, &name+1);
34 }
35