diff options
Diffstat (limited to 'src/lib9')
-rw-r--r-- | src/lib9/await.c | 6 | ||||
-rw-r--r-- | src/lib9/post9p.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/lib9/await.c b/src/lib9/await.c index f0235a95..7d0ca916 100644 --- a/src/lib9/await.c +++ b/src/lib9/await.c @@ -82,7 +82,11 @@ _await(int pid4, char *str, int n, int opt) ulong u, s; for(;;){ - pid = wait4(pid4, &status, opt, &ru); + /* On Linux, pid==-1 means anyone; on SunOS, it's pid==0. */ + if(pid4 == -1) + pid = wait3(&status, opt, &ru); + else + pid = wait4(pid4, &status, opt, &ru); if(pid <= 0) return -1; u = ru.ru_utime.tv_sec*1000+((ru.ru_utime.tv_usec+500)/1000); diff --git a/src/lib9/post9p.c b/src/lib9/post9p.c index ddedf62e..44c09431 100644 --- a/src/lib9/post9p.c +++ b/src/lib9/post9p.c @@ -10,6 +10,7 @@ post9pservice(int fd, char *name) if((ns = getns()) == nil) return -1; + s = smprint("unix!%s/%s", ns, name); free(ns); if(s == nil) @@ -27,6 +28,8 @@ post9pservice(int fd, char *name) _exits("exec"); default: w = wait(); + if(w == nil) + return -1; close(fd); free(s); if(w->msg && w->msg[0]){ |