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.
diff --git a/src/lib9/await.c b/src/lib9/await.c
index 5f2d58b..a97c6d1 100644
--- a/src/lib9/await.c
+++ b/src/lib9/await.c
@@ -71,8 +71,8 @@
return 0;
}
-int
-await(char *str, int n)
+static int
+_await(char *str, int n, int opt)
{
int pid, status, cd;
struct rusage ru;
@@ -80,8 +80,8 @@
ulong u, s;
for(;;){
- pid = wait3(&status, 0, &ru);
- if(pid < 0)
+ pid = wait3(&status, opt, &ru);
+ if(pid <= 0)
return -1;
u = ru.ru_utime.tv_sec*1000+((ru.ru_utime.tv_usec+500)/1000);
s = ru.ru_stime.tv_sec*1000+((ru.ru_stime.tv_usec+500)/1000);
@@ -103,3 +103,16 @@
}
}
}
+
+int
+await(char *str, int n)
+{
+ return _await(str, n, 0);
+}
+
+int
+awaitnohang(char *str, int n)
+{
+ return _await(str, n, WNOHANG);
+}
+