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