git: 9front

Download patch

ref: f05524b546156d1b9738c23f590178eb042c03ec
parent: 088b1bd04af5c83f6bb17262e756625ddb4e52d5
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue Apr 2 00:23:26 EDT 2013

add import -z option to skip initial tree negotiation (from mycroftiv)

--- a/sys/man/4/import
+++ b/sys/man/4/import
@@ -68,6 +68,19 @@
 Skip the authentication protocol.
 This is useful for connecting to foreign systems like Inferno.
 .TP
+.B -z
+Bypass the initial protocol request for which remote tree to serve.
+This is necessary when the remote 
+.IR exportfs (4) 
+is running with the 
+.B -r 
+or 
+.B -S 
+options which pre-select a file tree to serve. The exception is if both sides are
+operating in the
+.B -B
+backwards mode.
+.TP
 .B -B
 Run in ``backwards'' mode, described below.
 .TP
--- a/sys/src/cmd/import.c
+++ b/sys/src/cmd/import.c
@@ -25,6 +25,7 @@
 int		debug;
 int		doauth = 1;
 int		timedout;
+int		skiptree;
 
 int	connect(char*, char*, int);
 int	passive(void);
@@ -145,6 +146,9 @@
 	case 'B':
 		backwards = 1;
 		break;
+	case 'z':
+		skiptree = 1;
+		break;
 	default:
 		usage();
 	}ARGEND;
@@ -315,20 +319,22 @@
 			sysfatal("%r: %s", system);
 	}
 
-	procsetname("writing tree name %s", tree);
-	n = write(fd, tree, strlen(tree));
-	if(n < 0)
-		sysfatal("can't write tree: %r");
+	if(!skiptree){
+		procsetname("writing tree name %s", tree);
+		n = write(fd, tree, strlen(tree));
+		if(n < 0)
+			sysfatal("can't write tree: %r");
 
-	strcpy(buf, "can't read tree");
+		strcpy(buf, "can't read tree");
 
-	procsetname("awaiting OK for %s", tree);
-	n = read(fd, buf, sizeof buf - 1);
-	if(n!=2 || buf[0]!='O' || buf[1]!='K'){
-		if (timedout)
-			sysfatal("timed out connecting to %s", na);
-		buf[sizeof buf - 1] = '\0';
-		sysfatal("bad remote tree: %s", buf);
+		procsetname("awaiting OK for %s", tree);
+		n = read(fd, buf, sizeof buf - 1);
+		if(n!=2 || buf[0]!='O' || buf[1]!='K'){
+			if (timedout)
+				sysfatal("timed out connecting to %s", na);
+			buf[sizeof buf - 1] = '\0';
+			sysfatal("bad remote tree: %s", buf);
+		}
 	}
 
 	if(oldserver)
@@ -366,7 +372,7 @@
 usage(void)
 {
 	fprint(2, "usage: import [-abcC] [-A] [-E clear|ssl|tls] "
-"[-e 'crypt auth'|clear] [-k keypattern] [-p] host remotefs [mountpoint]\n");
+"[-e 'crypt auth'|clear] [-k keypattern] [-p] [-z] host remotefs [mountpoint]\n");
 	exits("usage");
 }
 
--