Commit Diff


commit - e29d0c84fea05f317385ab1a8f3abceb7726b1bb
commit + ed0601ee18c398553b2f67ea5c2618ae306a6ad5
blob - 7d218e67c38f9d1b6f1df6a86779d0e839ad29f7
blob + 1fa040c4400abb80a71caf108e22f9ef78738c64
--- src/cmd/9p.c
+++ src/cmd/9p.c
@@ -323,6 +323,7 @@ xrdwr(int argc, char **argv)
 void
 rdcon(void *v)
 {
+	int n;
 	char buf[4096];
 	CFid *fid;
 	
@@ -331,6 +332,8 @@ rdcon(void *v)
 		n = read(0, buf, sizeof buf);
 		if(n <= 0)
 			threadexitsall(0);
+		if(buf[0] == 'R'-'A'+1)
+			threadexitsall(0);
 		if(fswrite(fid, buf, n) != n)
 			fprint(2, "write: %r\n");
 	}
@@ -357,9 +360,9 @@ xcon(int argc, char **argv)
 		usage();
 
 	fid = xopen(argv[0], ORDWR);
-	proccreate(rdcon, fid, STACK);
+	proccreate(rdcon, fid, 32768);
 	for(;;){
-		n = fsread(fid, buf, n);
+		n = fsread(fid, buf, sizeof buf);
 		if(n <= 0)
 			threadexitsall(0);
 		if(nocr){