tMore little bug fixes - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit f1bfc54e12efe488e355debf696dbd999c62fe07
parent 1a8f27c35024af7b4ed857a388d20f0a4a560db0
Author: rsc 
Date:   Fri, 14 May 2004 17:45:39 +0000

More little bug fixes

Diffstat:
  M plumb/basic                         |       2 +-
  M rcmain                              |       6 +++---
  M src/cmd/mk/unix.c                   |       8 ++++++++
  M src/cmd/mkfile                      |       2 +-
  M src/cmd/rc/plan9ish.c               |       1 -
  M src/lib9/9proc.h                    |       2 ++
  M src/lib9/_p9proc.c                  |      13 +++++++++++++
  M src/lib9/fork.c                     |       1 +
  M src/libthread/exit.c                |       3 ++-

9 files changed, 31 insertions(+), 7 deletions(-)
---
diff --git a/plumb/basic b/plumb/basic
t@@ -38,7 +38,7 @@ data matches '[a-zA-Z¡-￿0-9_\-./]+'
 data matches '([a-zA-Z¡-￿0-9_\-./]+)\.(jpe?g|JPE?G|gif|GIF|tiff?|TIFF?|ppm|bit|png|PNG)'
 arg isfile        $0
 plumb to image
-plumb start qiv -t $0
+plumb start qiv -t $file
 
 # postscript/pdf/dvi go to page but not over the a plumb port
 # the port is here for reference but is unused
diff --git a/rcmain b/rcmain
t@@ -10,7 +10,7 @@ case 1
         prompt=($prompt '        ')
 }
 if(~ $rcname ?.out ?.rc */?.rc */?.out) prompt=('broken! ' '        ')
-if(flag p) path=(/bin)
+if(flag p) path=(/bin /usr/bin)
 if not{
         finit
         if(~ $#path 0) {
t@@ -28,9 +28,9 @@ if(! ~ $#cflag 0){
 if not if(flag i){
         if(~ $TERM 9term){
                 if(~ $#'fn#cd' 0)
-                        fn cd { builtin cd $1 && label `{pwd} }
+                        fn cd { builtin cd $1 && flag i && awd }
         }
-        if(flag l && /bin/test -r $home/lib/profile) . $home/lib/profile
+        if(flag l && test -r $home/lib/profile) . $home/lib/profile
         status=''
         if(! ~ $#* 0) . $*
         . -i '/dev/stdin'
diff --git a/src/cmd/mk/unix.c b/src/cmd/mk/unix.c
t@@ -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
t@@ -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
t@@ -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
t@@ -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
t@@ -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
diff --git a/src/lib9/fork.c b/src/lib9/fork.c
t@@ -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
t@@ -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 */