Commit Diff


commit - 91c13e54b5d631b65e2f8344d5e0abd058f78ba1
commit + f063dad96ec737db0ce213c4df32ecc600637881
blob - fb45d3e443198facb1a26c88517eea22aaa795b7
blob + 85b08861a944786deeab4c5fddb2816929799d97
--- bin/B
+++ bin/B
@@ -1,17 +1,14 @@
 #!/bin/sh
 
+files=""
+dest=""
+
 if [ $# -eq 0 ]
 then
 	echo 'usage: B file...' 2>&1
 	exit 1
 fi
 
-for i
-do
-	plumb $i
-done
-exit 0
-
 if [ "x$DISPLAY" = "x" ]
 then
 	sam="/tmp/.sam.$USER"
@@ -25,8 +22,10 @@ fi
 
 if [ ! -p $sam ]
 then
-	echo could not find sam 2>&1
-	exit 2
+	for i
+	do
+		plumb -s B -d edit $i
+	done
 else
 	for i
 	do
blob - e94817460c1546239e58389fd1ed8431ca873adb
blob + 16fa2027da3761df7a4ab8f3290c518646a9ac98
--- src/cmd/9p.c
+++ src/cmd/9p.c
@@ -2,6 +2,7 @@
 #include <libc.h>
 #include <fcall.h>
 #include <fs.h>
+#include <thread.h>
 
 char *addr;
 
@@ -40,7 +41,7 @@ struct {
 };
 
 void
-main(int argc, char **argv)
+threadmain(int argc, char **argv)
 {
 	char *cmd;
 	int i;
@@ -60,7 +61,7 @@ main(int argc, char **argv)
 	for(i=0; i<nelem(cmds); i++){
 		if(strcmp(cmds[i].s, cmd) == 0){
 			cmds[i].f(argc, argv);
-			exits(0);
+			threadexitsall(0);
 		}
 	}
 	usage();	
blob - 16fca61eede42b97a771d006debe4eff5251ba32
blob + 4263f0359811fc3b1ffa7babe175280b883d0aab
--- src/cmd/9pserve.c
+++ src/cmd/9pserve.c
@@ -750,7 +750,7 @@ inputthread(void *arg)
 			sendq(m->c->outq, m);
 	}
 	closeioproc(io);
-	fprint(2, "input eof\n");
+	//fprint(2, "input eof\n");
 	threadexitsall(0);
 }
 
blob - 2706dda660e8c3e0aa08cfee5fcb0677505f5676
blob + b39d2367f8cc8132375ce731e0f7ca22e5a6f919
--- src/cmd/9term/mkfile
+++ src/cmd/9term/mkfile
@@ -9,5 +9,5 @@ OFILES=\
 
 <$PLAN9/src/mkone
 
-LDFLAGS=-lframe -ldraw -lplumb -lfs -lmux -lthread -l9 -lfmt -lutf -L$X11/lib -lX11 -lutil
+LDFLAGS=-lframe -ldraw -lplumb -lfs -lmux -lthread -l9 -L$X11/lib -lX11 -lutil
 
blob - 62b28be2094bae47654c67f6cd64b69e6974e99a
blob + f5b9e1a2c35dba22a52914917b02e83e4935bae2
--- src/cmd/dict/mkfile
+++ src/cmd/dict/mkfile
@@ -11,7 +11,7 @@ OFILES=dict.$O\
 
 HFILES=dict.h kuten.h
 
-LDFLAGS=$LDFLAGS -lbio -l9 -lregexp9 -lfmt -lutf
+LDFLAGS=$LDFLAGS -lbio -lregexp9 -l9
 <$PLAN9/src/mkone
 
 mkindex: mkindex.$O $LFILES utils.$O
blob - 316bdbdbd44b5ef1ee22f4ecf6954feaf51fae8c
blob + 042bd7a0ea189dbc285f54828fd4e5d05b52071a
--- src/cmd/diff/mkfile
+++ src/cmd/diff/mkfile
@@ -12,4 +12,4 @@ HFILES=diff.h
 
 <$PLAN9/src/mkone
 
-LDFLAGS=$LDFLAGS -lbio -l9 -lfmt -lutf
+LDFLAGS=$LDFLAGS -lbio -l9
blob - 60560033e9214c0e3aba427ab4cc2b25a88000f4
blob + a226a5e88a548863b3b1c795916be847acff250a
--- src/cmd/hoc/mkfile
+++ src/cmd/hoc/mkfile
@@ -17,4 +17,4 @@ YFILES=hoc.y\
 
 <$PLAN9/src/mkone
 
-LDFLAGS=$LDFLAGS -lbio -l9 -lfmt -lutf
+LDFLAGS=$LDFLAGS -lbio -l9
blob - e755629b2e494456374cfff23ae763fc97bab173
blob + dca7c9d405855ef03a415895b89e0762511049b2
--- src/cmd/mk/mkfile
+++ src/cmd/mk/mkfile
@@ -31,7 +31,7 @@ HFILES=\
 	mk.h\
 	fns.h\
 
-LDFLAGS=$LDFLAGS -lregexp9 -lbio -lfmt -lutf
+LDFLAGS=$LDFLAGS -lregexp9 -lbio -l9
 
 <$PLAN9/src/mkone
 
blob - 6e4c218bf01a49122a393ff765daa334a646e9be
blob + dbdc1ed4f110653fa95886bbd4a453808605d1f6
--- src/cmd/mkfile
+++ src/cmd/mkfile
@@ -2,7 +2,7 @@ PLAN9=../..
 <$PLAN9/src/mkhdr
 
 TARG=`ls *.c | sed 's/\.c//'`
-LDFLAGS=$LDFLAGS -lthread -lsec -lfs -lmux -lregexp9 -lbio -l9
+LDFLAGS=$LDFLAGS -lsec -lfs -lmux -lregexp9 -lthread -lbio -l9
 
 <$PLAN9/src/mkmany
 
blob - 912e5ca0235628a823feeca07457db569c03e0b1
blob + 4776d1278a28a6102a5bbc3689489f14c0244311
--- src/cmd/plumb/fsys.c
+++ src/cmd/plumb/fsys.c
@@ -195,7 +195,7 @@ startfsys(void)
 	if(post9pservice(p[1], "plumb") < 0)
 		sysfatal("post9pservice plumb: %r");
 	close(p[1]);
-	proccreate(fsysproc, nil, Stack);
+	threadcreate(fsysproc, nil, Stack);
 }
 
 static void
@@ -213,14 +213,14 @@ fsysproc(void *v)
 		if(buf == nil)
 			error("malloc failed: %r");
 		qlock(&readlock);
-		n = read9pmsg(srvfd, buf, messagesize);
+		n = threadread9pmsg(srvfd, buf, messagesize);
 		if(n <= 0){
 			if(n < 0)
 				error("i/o error on server channel");
 			threadexitsall("unmounted");
 		}
 		if(readlock.head == nil)	/* no other processes waiting to read; start one */
-			proccreate(fsysproc, nil, Stack);
+			threadcreate(fsysproc, nil, Stack);
 		qunlock(&readlock);
 		if(t == nil)
 			t = emalloc(sizeof(Fcall));
blob - dc1abbb1554cbb6eabbab288eaa7eb2286e491e0
blob + 5a4cd88cef1ec5a8b2d458e933f427ae0df8fbce
--- src/cmd/plumb/match.c
+++ src/cmd/plumb/match.c
@@ -431,7 +431,7 @@ execproc(void *v)
 	av = v;
 	stackargv(av, args, argc);
 	free(av);
-	procexec(nil, fd, args[0], args);
+	threadexec(nil, fd, args[0], args);
 	threadexits("can't exec");
 }
 
@@ -458,6 +458,6 @@ Found:
 	argv = buildargv(rs->act[i]->arg, e);
 	if(argv[0] == nil)
 		return "empty argument list";
-	proccreate(execproc, argv, EXECSTACK);
+	threadcreate(execproc, argv, EXECSTACK);
 	return nil;
 }
blob - 6550387f85461e005767459d452ab22f892c9d82
blob + 8149441671bdedceff20e213754cf7d37edb66cb
--- src/cmd/plumb/mkfile
+++ src/cmd/plumb/mkfile
@@ -14,4 +14,4 @@ $PLUMB:		$HFILES
 $O.plumb:	$PLUMB
 $O.plumber:	$PLUMBER
 
-LDFLAGS=$LDFLAGS -lplumb -lfs -lmux -lthread -lregexp9 -l9 -lbio -lfmt -lutf
+LDFLAGS=$LDFLAGS -lplumb -lfs -lmux -lthread -lregexp9 -lbio -l9
blob - e0cff91279529ac1f68fa230001e1c1d6e763242
blob + a10f2c37afa9ed2546d51eacd974e214913660f8
--- src/cmd/plumb/plumb.c
+++ src/cmd/plumb/plumb.c
@@ -1,6 +1,7 @@
 #include <u.h>
 #include <libc.h>
 #include <plumb.h>
+#include <thread.h>
 
 char *plumbfile = nil;
 Plumbmsg m;
@@ -36,7 +37,7 @@ gather(void)
 }
 
 void
-main(int argc, char *argv[])
+threadmain(int argc, char *argv[])
 {
 	char buf[1024], *p;
 	int fd, i, input;
@@ -115,5 +116,5 @@ main(int argc, char *argv[])
 			exits("error");
 		}
 	}
-	exits(nil);
+	threadexitsall(nil);
 }
blob - 424469f2d2ee2405dfbc1e8a71b0a388d5a785bb
blob + ae45f933d95ebd5bedd4b4cdb3e75f8eb7d03a78
--- src/cmd/plumb/plumber.c
+++ src/cmd/plumb/plumber.c
@@ -26,23 +26,10 @@ makeports(Ruleset *rules[])
 }
 
 void
-mainproc(void *v)
-{
-	Channel *c;
-
-	c = v;
-	printerrors = 0;
-	makeports(rules);
-	startfsys();
-	sendp(c, nil);
-}
-
-void
 threadmain(int argc, char *argv[])
 {
 	char buf[512];
 	int fd;
-	Channel *c;
 
 	progname = "plumber";
 
@@ -79,11 +66,18 @@ threadmain(int argc, char *argv[])
 	 * Start all processes and threads from other proc
 	 * so we (main pid) can return to user.
 	 */
-	c = chancreate(sizeof(void*), 0);
-	proccreate(mainproc, c, 8192);
-	recvp(c);
-	chanfree(c);
-	threadexits(nil);
+	switch(fork()){
+	case -1:
+		sysfatal("fork: %r");
+	case 0:
+		break;
+	default:
+		_exit(0);
+	}
+
+	printerrors = 0;
+	makeports(rules);
+	startfsys();
 }
 
 void
blob - cc476973c176d5a27b53c7099c62c46f2404f43d
blob + 38b8440414c44ba6687a1d49a906fdaef2ccd259
--- src/cmd/rc/mkfile
+++ src/cmd/rc/mkfile
@@ -31,7 +31,7 @@ HFILES=\
 
 YFILES=syn.y
 
-LDFLAGS=$LDFLAGS -l9 -lfmt -lutf
+LDFLAGS=$LDFLAGS -l9
 
 <$PLAN9/src/mkone
 
blob - 38a01036487be5111198187ef12099605962a136
blob + c7de3531385d2618b2a080252c850c3f21633e4e
--- src/cmd/rc/syn.y
+++ src/cmd/rc/syn.y
@@ -7,7 +7,7 @@
 %left BANG SUBSHELL
 %left PIPE
 %left '^'
-%right '$' COUNT '\"'
+%right '$' COUNT '"'
 %left SUB
 %{
 #include "rc.h"
blob - 280edee157247faafb12c6b7e1e4c888283c4b0f
blob + febebc5e46aa5e3ab1c3e8e8a7f575688fc0e6d6
--- src/cmd/sam/mkfile
+++ src/cmd/sam/mkfile
@@ -28,6 +28,6 @@ HFILES=sam.h\
 	errors.h\
 	mesg.h\
 
-LDFLAGS=$LDFLAGS -l9 -lfmt -lutf
+LDFLAGS=$LDFLAGS -l9
 
 <$PLAN9/src/mkone
blob - ba64daf03309614eba8148952527b589ee52f90f
blob + 9aea7a9800e8163599cbf3e2a20a98c76af7aea1
--- src/cmd/samterm/mkfile
+++ src/cmd/samterm/mkfile
@@ -22,8 +22,8 @@ HFILES=\
 	$PLAN9/include/draw.h\
 
 CFLAGS=$CFLAGS -I../sam
-LDFLAGS=$LDFLAGS -lframe -ldraw -lthread -l9 -lregexp9 \
-	-lbio -lfmt -lutf -L$X11/lib -lX11 -lm
+LDFLAGS=$LDFLAGS -lframe -ldraw -lthread -lregexp9 \
+	-lbio -l9 -L$X11/lib -lX11 -lm
 
 o.samterm: $PLAN9/lib/libframe.a $PLAN9/lib/libdraw.a $PLAN9/lib/libthread.a