Commit Diff


commit - 6bcc5ae9851fc3db44144b4f07d77b3e1224232e
commit + be3e351464e9c656eae8644727060f3d458a2984
blob - 5ccf2900e2427d9c291ce9754bbaa69f17451fb8
blob + 783f9ab192dc126a5e3b40f51f454ab56d0fb624
--- man/man4/vacfs.4
+++ man/man4/vacfs.4
@@ -14,11 +14,11 @@ vacfs \- a Venti-based file system
 .B -h
 .I host
 ]
-.\" [
-.\" .B -m
-.\" .I mtpt
-.\" ]
 [
+.B -m
+.I mtpt
+]
+[
 .B -s
 .I srvname
 ]
@@ -59,11 +59,10 @@ metaname 
 .TP
 .B -i
 Use file descriptors 0 and 1 as the 9P communication channel rather than create a pipe.
-.\" .TP
-.\" .BI -m " mtpt
-.\" The location to mount the file system. The default is
-.\" .BR /n/vac .
 .TP
+.BI -m " mtpt
+The location to mount the file system. The default is not to mount.
+.TP
 .BI -p
 Disables permission checking.
 .TP
blob - 9557667afd5ffabe328c8979864ab10436c1069b
blob + b5aafe87287f1f7e0ae81b4a7425dcab883f1bb4
--- src/cmd/vac/vacfs.c
+++ src/cmd/vac/vacfs.c
@@ -62,6 +62,7 @@ VtConn  *conn;
 /* VtSession *session; */
 int	noperm;
 int	dotu;
+char *defmnt;
 
 Fid *	newfid(int);
 void	error(char*);
@@ -166,6 +167,9 @@ threadmain(int argc, char *argv[])
 	case 's':
 		defsrv = EARGF(usage());
 		break;
+	case 'm':
+		defmnt = EARGF(usage());
+		break;
 	case 'p':
 		noperm = 1;
 		break;
@@ -189,7 +193,7 @@ threadmain(int argc, char *argv[])
 	mfd[1] = p[0];
 	proccreate(srv, 0, 32 * 1024);
 
-	if(defsrv == nil){
+	if(defsrv == nil && defmnt == nil){
 		q = strrchr(argv[0], '/');
 		if(q)
 			q++;
@@ -203,7 +207,7 @@ threadmain(int argc, char *argv[])
 			defsrv[l-4] = 0;
 	}
 
-	if(post9pservice(p[1], defsrv) != 0) 
+	if(post9pservice(p[1], defsrv, defmnt) != 0) 
 		sysfatal("post9pservice");
 
 	threadexits(0);
@@ -814,18 +818,8 @@ io(void)
 	int n;
 
 	for(;;){
-		/*
-		 * reading from a pipe or a network device
-		 * will give an error after a few eof reads
-		 * however, we cannot tell the difference
-		 * between a zero-length read and an interrupt
-		 * on the processes writing to us,
-		 * so we wait for the error
-		 */
-		n = read9pmsg(mfd[0], mdata, sizeof mdata);
-		if(n == 0)
-			continue;
-		if(n < 0)
+		n = read9pmsg(mfd[0], mdata, sizeof mdata);
+		if(n <= 0)
 			break;
 		if(convM2Su(mdata, n, &rhdr, dotu) != n)
 			sysfatal("convM2S conversion error");