Commit Diff


commit - 1a8f27c35024af7b4ed857a388d20f0a4a560db0
commit + f1bfc54e12efe488e355debf696dbd999c62fe07
blob - e9a17fa9d5157809aca8faa5461e006388c1e5d3
blob + 8e9ec5c299d7ad1c7d17b9205b1eac48ea22ed43
--- plumb/basic
+++ plumb/basic
@@ -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
blob - b1f62620403daf8dce3870b2002c793e1e551c81
blob + 9c50ca45322b8a6fb0c5c20243eaa36d98e63ed2
--- rcmain
+++ rcmain
@@ -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) {
@@ -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'
blob - 00bee01e4466c95e33ec4df70e7302e695337702
blob + 9e4fcea9949ab4c0ee5e6a710e8a24b77131575b
--- src/cmd/mk/unix.c
+++ src/cmd/mk/unix.c
@@ -23,8 +23,16 @@ 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
blob - caf7a66c0a167f33336ddd469a7487d1d8b91f84
blob + e5ddf684f839346b10ff014df984c36a3a20c1af
--- src/cmd/mkfile
+++ 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
blob - 6644778c434c7e7f11b7303c83d63261bd1526bc
blob + af1e449d5498d4f86848f69542a400db63caad75
--- src/cmd/rc/plan9ish.c
+++ 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,
blob - 663d65b6bee3f48695cfb0611cf91970825703d6
blob + 1f471b6fe88a3c566fa1190a576d10b59bd140d0
--- src/lib9/9proc.h
+++ src/lib9/9proc.h
@@ -18,3 +18,5 @@ struct Uproc
 
 extern Uproc *_p9uproc(int);
 extern void _p9uprocdie(void);
+extern void _clearuproc(void);
+
blob - c492ae15275b7c7963b3fcaa7bd225340b02b3e5
blob + 9543bf2407c586755e85d19e9a8ae300e789d8ad
--- src/lib9/_p9proc.c
+++ 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)
 {
blob - 99e84dc915eb04b8dcaae43494b2923c43fdfb08
blob + 4dbff87b014d7ab5136898bcdcf281dbf83a2d0c
--- src/lib9/fork.c
+++ src/lib9/fork.c
@@ -9,6 +9,7 @@ p9fork(void)
 	int pid;
 
 	pid = fork();
+	_clearuproc();
 	_p9uproc(0);
 	return pid;
 }
blob - 1f9c26ae6aacc4c9c7ecb872731f10174f184621
blob + cf34c60cca01a0fab1eddca1a4524f0b4ac608de
--- src/libthread/exit.c
+++ 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 */