aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-07 08:02:54 +0000
committerrsc <devnull@localhost>2005-01-07 08:02:54 +0000
commit005a85f3a2ef85ec1a64ce05a486c84e25cf6f94 (patch)
treeaf1ea3a3a535f103990eef9411150e6c7c39dad6 /src
parentc345061e8d81a737b2926da7ecad4b4389677fe8 (diff)
downloadplan9port-005a85f3a2ef85ec1a64ce05a486c84e25cf6f94.tar.gz
plan9port-005a85f3a2ef85ec1a64ce05a486c84e25cf6f94.tar.bz2
plan9port-005a85f3a2ef85ec1a64ce05a486c84e25cf6f94.zip
success on the sun
Diffstat (limited to 'src')
-rw-r--r--src/cmd/rc/unixcrap.c16
-rw-r--r--src/lib9/await.c6
-rw-r--r--src/lib9/post9p.c3
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]){