wait.c - 9base - revived minimalist port of Plan 9 userland to Unix
 (HTM) git clone git://git.suckless.org/9base
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       wait.c (813B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 
            4 static Waitmsg*
            5 _wait(int n, char *buf)
            6 {
            7         int l;
            8         char *fld[5];
            9         Waitmsg *w;
           10 
           11         if(n <= 0)
           12                 return nil;
           13         buf[n] = '\0';
           14         if(tokenize(buf, fld, nelem(fld)) != nelem(fld)){
           15                 werrstr("couldn't parse wait message");
           16                 return nil;
           17         }
           18         l = strlen(fld[4])+1;
           19         w = malloc(sizeof(Waitmsg)+l);
           20         if(w == nil)
           21                 return nil;
           22         w->pid = atoi(fld[0]);
           23         w->time[0] = atoi(fld[1]);
           24         w->time[1] = atoi(fld[2]);
           25         w->time[2] = atoi(fld[3]);
           26         w->msg = (char*)&w[1];
           27         memmove(w->msg, fld[4], l);
           28         return w;
           29 }
           30 
           31 Waitmsg*
           32 wait(void)
           33 {
           34         char buf[256];
           35 
           36         return _wait(await(buf, sizeof buf-1), buf);
           37 }
           38 
           39 Waitmsg*
           40 waitnohang(void)
           41 {
           42         char buf[256];
           43 
           44         return _wait(awaitnohang(buf, sizeof buf-1), buf);
           45 }
           46 
           47 Waitmsg*
           48 waitfor(int pid)
           49 {
           50         char buf[256];
           51 
           52         return _wait(awaitfor(pid, buf, sizeof buf-1), buf);
           53 }
           54