aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/wait.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-02-29 22:10:26 +0000
committerrsc <devnull@localhost>2004-02-29 22:10:26 +0000
commit5a8e63b2f016735364d17866d5e2bcb35d20c78b (patch)
treed5d0ce11e087efaf81c77311bac9d30aed41783d /src/lib9/wait.c
parentd51419bf4397cf13d0c50bf84c125477c6bed307 (diff)
downloadplan9port-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.c20
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);
+}
+