1*9a747e4fSDavid du Colombier #include <u.h> 2*9a747e4fSDavid du Colombier #include <libc.h> 3*9a747e4fSDavid du Colombier #include <fcall.h> 4*9a747e4fSDavid du Colombier 5*9a747e4fSDavid du Colombier Waitmsg* wait(void)6*9a747e4fSDavid du Colombierwait(void) 7*9a747e4fSDavid du Colombier { 8*9a747e4fSDavid du Colombier int n, l; 9*9a747e4fSDavid du Colombier char buf[512], *fld[5]; 10*9a747e4fSDavid du Colombier Waitmsg *w; 11*9a747e4fSDavid du Colombier 12*9a747e4fSDavid du Colombier n = await(buf, sizeof buf-1); 13*9a747e4fSDavid du Colombier if(n < 0) 14*9a747e4fSDavid du Colombier return nil; 15*9a747e4fSDavid du Colombier buf[n] = '\0'; 16*9a747e4fSDavid du Colombier if(tokenize(buf, fld, nelem(fld)) != nelem(fld)){ 17*9a747e4fSDavid du Colombier werrstr("couldn't parse wait message"); 18*9a747e4fSDavid du Colombier return nil; 19*9a747e4fSDavid du Colombier } 20*9a747e4fSDavid du Colombier l = strlen(fld[4])+1; 21*9a747e4fSDavid du Colombier w = malloc(sizeof(Waitmsg)+l); 22*9a747e4fSDavid du Colombier if(w == nil) 23*9a747e4fSDavid du Colombier return nil; 24*9a747e4fSDavid du Colombier w->pid = atoi(fld[0]); 25*9a747e4fSDavid du Colombier w->time[0] = atoi(fld[1]); 26*9a747e4fSDavid du Colombier w->time[1] = atoi(fld[2]); 27*9a747e4fSDavid du Colombier w->time[2] = atoi(fld[3]); 28*9a747e4fSDavid du Colombier w->msg = (char*)&w[1]; 29*9a747e4fSDavid du Colombier memmove(w->msg, fld[4], l); 30*9a747e4fSDavid du Colombier return w; 31*9a747e4fSDavid du Colombier } 32*9a747e4fSDavid du Colombier 33