aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd/mk/unix.c8
-rw-r--r--src/cmd/mkfile2
-rw-r--r--src/cmd/rc/plan9ish.c1
-rw-r--r--src/lib9/9proc.h2
-rw-r--r--src/lib9/_p9proc.c13
-rw-r--r--src/lib9/fork.c1
-rw-r--r--src/libthread/exit.c3
7 files changed, 27 insertions, 3 deletions
diff --git a/src/cmd/mk/unix.c b/src/cmd/mk/unix.c
index 00bee01e..9e4fcea9 100644
--- a/src/cmd/mk/unix.c
+++ b/src/cmd/mk/unix.c
@@ -23,12 +23,20 @@ readenv(void)
Word *w;
for(p = environ; *p; p++){
+/* rsc 5/5/2004 -- This misparses fn#cd={whatever}
s = shname(*p);
if(*s == '=') {
*s = 0;
w = newword(s+1);
} else
w = newword("");
+*/
+ s = strchr(*p, '=');
+ if(s){
+ *s = 0;
+ w = newword(s+1);
+ } else
+ w = newword("");
if (symlook(*p, S_INTERNAL, 0))
continue;
s = strdup(*p);
diff --git a/src/cmd/mkfile b/src/cmd/mkfile
index caf7a66c..e5ddf684 100644
--- a/src/cmd/mkfile
+++ b/src/cmd/mkfile
@@ -5,7 +5,7 @@ SHORTLIB=sec fs mux regexp9 thread bio 9
<$PLAN9/src/mkmany
-BUGGERED='CVS|faces|factotum|mailfs|scat|upas|vac|venti|lex'
+BUGGERED='CVS|faces|factotum|mailfs|scat|upas|vac|venti|lex|vncv'
DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "^($BUGGERED)$"`
<$PLAN9/src/mkdirs
diff --git a/src/cmd/rc/plan9ish.c b/src/cmd/rc/plan9ish.c
index 6644778c..af1e449d 100644
--- a/src/cmd/rc/plan9ish.c
+++ b/src/cmd/rc/plan9ish.c
@@ -34,7 +34,6 @@ char Fdprefix[]="/dev/fd/";
void execfinit(void);
void execbind(void);
void execmount(void);
-void execnewpgrp(void);
builtin Builtin[]={
"cd", execcd,
"whatis", execwhatis,
diff --git a/src/lib9/9proc.h b/src/lib9/9proc.h
index 663d65b6..1f471b6f 100644
--- a/src/lib9/9proc.h
+++ b/src/lib9/9proc.h
@@ -18,3 +18,5 @@ struct Uproc
extern Uproc *_p9uproc(int);
extern void _p9uprocdie(void);
+extern void _clearuproc(void);
+
diff --git a/src/lib9/_p9proc.c b/src/lib9/_p9proc.c
index c492ae15..9543bf24 100644
--- a/src/lib9/_p9proc.c
+++ b/src/lib9/_p9proc.c
@@ -18,6 +18,19 @@ static Uproc *alluproc[PIDHASH];
static int allupid[PIDHASH];
static Lock uproclock;
+void
+_clearuproc(void)
+{
+ int i;
+
+ /* called right after fork - no locking needed */
+ for(i=0; i<PIDHASH; i++)
+ if(alluproc[i] != T && alluproc[i] != 0)
+ free(alluproc[i]);
+ memset(alluproc, 0, sizeof alluproc);
+ memset(allupid, 0, sizeof allupid);
+}
+
Uproc*
_p9uproc(int inhandler)
{
diff --git a/src/lib9/fork.c b/src/lib9/fork.c
index 99e84dc9..4dbff87b 100644
--- a/src/lib9/fork.c
+++ b/src/lib9/fork.c
@@ -9,6 +9,7 @@ p9fork(void)
int pid;
pid = fork();
+ _clearuproc();
_p9uproc(0);
return pid;
}
diff --git a/src/libthread/exit.c b/src/libthread/exit.c
index 1f9c26ae..cf34c60c 100644
--- a/src/libthread/exit.c
+++ b/src/libthread/exit.c
@@ -55,8 +55,9 @@ threadexitsall(char *exitstr)
_threaddebug(DBGSCHED, "threadexitsall kill %d", pid[i]);
if(pid[i]==0 || pid[i]==-1)
fprint(2, "bad pid in threadexitsall: %d\n", pid[i]);
- else if(pid[i] != mypid)
+ else if(pid[i] != mypid){
kill(pid[i], SIGTERM);
+ }
}
/* leave */