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");}
--
⑨