diff options
-rw-r--r-- | src/cmd/rc/unixcrap.c | 16 | ||||
-rw-r--r-- | src/lib9/await.c | 6 | ||||
-rw-r--r-- | src/lib9/post9p.c | 3 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/cmd/rc/unixcrap.c b/src/cmd/rc/unixcrap.c index 3a4dd2c3..98660483 100644 --- a/src/cmd/rc/unixcrap.c +++ b/src/cmd/rc/unixcrap.c @@ -17,13 +17,29 @@ static int rlx[] = { RLIMIT_CORE, RLIMIT_DATA, RLIMIT_FSIZE, +#ifdef RLIMIT_MEMLOCK RLIMIT_MEMLOCK, +#else + 0, +#endif +#ifdef RLIMIT_RSS RLIMIT_RSS, +#else + 0, +#endif RLIMIT_NOFILE, RLIMIT_STACK, RLIMIT_CPU, +#ifdef RLIMIT_NPROC RLIMIT_NPROC, +#else + 0, +#endif +#ifdef RLIMIT_RSS RLIMIT_RSS, +#else + 0, +#endif }; static void 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]){ |