diff options
author | rsc <devnull@localhost> | 2004-02-29 22:10:26 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-02-29 22:10:26 +0000 |
commit | 5a8e63b2f016735364d17866d5e2bcb35d20c78b (patch) | |
tree | d5d0ce11e087efaf81c77311bac9d30aed41783d /src/lib9/wait.c | |
parent | d51419bf4397cf13d0c50bf84c125477c6bed307 (diff) | |
download | plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.tar.gz plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.tar.bz2 plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.zip |
Fighting the good fight.
Move libfmt, libutf into subdirectories of lib9.
Add poll-based socket i/o to libthread, so that we can
avoid using multiple procs when possible, thus removing
dependence on crappy pthreads implementations.
Convert samterm, acme to the single-proc libthread.
Bring libcomplete, acme up-to-date w.r.t. Plan 9 distribution.
Diffstat (limited to 'src/lib9/wait.c')
-rw-r--r-- | src/lib9/wait.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/lib9/wait.c b/src/lib9/wait.c index 6dc137b1..856f85c0 100644 --- a/src/lib9/wait.c +++ b/src/lib9/wait.c @@ -1,15 +1,15 @@ #include <u.h> #include <libc.h> -Waitmsg* -wait(void) +static Waitmsg* +_wait(int nohang) { int n, l; char buf[512], *fld[5]; Waitmsg *w; - n = await(buf, sizeof buf-1); - if(n < 0) + n = (nohang ? awaitnohang : await)(buf, sizeof buf-1); + if(n <= 0) return nil; buf[n] = '\0'; if(tokenize(buf, fld, nelem(fld)) != nelem(fld)){ @@ -29,3 +29,15 @@ wait(void) return w; } +Waitmsg* +wait(void) +{ + return _wait(0); +} + +Waitmsg* +waitnohang(void) +{ + return _wait(1); +} + |