[9changes] patch: srvaname

5 views
Skip to first unread message

9cha...@9grid.fr

unread,
Apr 30, 2015, 6:08:20 PM4/30/15
to 9cha...@googlegroups.com
allow the attach name to be specified in srv(4).
this is helpful when writing rules for 9fs that need
an attachpoint. the standard way of doing this

case aggle
srv $nflag -q tcp!aggle.example.org aggle &&
mount $nflag /srv/aggle /n/aggle aggle

suffers the problem that if /srv/aggle becomes stale, it is
not retried. with this change this rule can be rewritten
like so

case aggle
srv $nflag -q tcp!aggle.example.org aggle /n/aggle aggle

and it is now correct, even if /srv/aggle becomes stale.

Reference: /n/sources/patch/srvaname
Date: Tue Apr 1 04:05:12 CES 2014
Signed-off-by: quan...@quanstro.net

--- /sys/src/cmd/srv.c Tue Apr 1 04:01:35 2014
+++ /sys/src/cmd/srv.c Tue Apr 1 04:01:34 2014
@@ -15,7 +15,7 @@
void
usage(void)
{
- fprint(2, "usage: %s [-abcCm] [net!]host [srvname [mtpt]]\n", argv0);
+ fprint(2, "usage: %s [-abcCm] [net!]host [srvname [mtpt [attachpt]]]\n", argv0);
fprint(2, " or %s -e [-abcCm] command [srvname [mtpt]]\n", argv0);

exits("usage");
@@ -65,7 +65,7 @@
main(int argc, char *argv[])
{
int fd, doexec;
- char *srv, *mtpt;
+ char *srv, *mtpt, *aname;
char dir[1024];
char err[ERRMAX];
char *p, *p2;
@@ -128,6 +128,8 @@
usage();

switch(argc){
+ default:
+ usage();
case 1: /* calculate srv and mtpt from address */
p = strrchr(argv[0], '/');
p = p ? p+1 : argv[0];
@@ -135,6 +137,7 @@
p2 = strchr(p, '!');
p2 = p2 ? p2+1 : p;
mtpt = smprint("/n/%s", p2);
+ aname = smprint("");
break;
case 2: /* calculate mtpt from address, srv given */
srv = smprint("/srv/%s", argv[1]);
@@ -143,16 +146,22 @@
p2 = strchr(p, '!');
p2 = p2 ? p2+1 : p;
mtpt = smprint("/n/%s", p2);
+ aname = smprint("");
break;
case 3: /* srv and mtpt given */
domount = 1;
reallymount = 1;
srv = smprint("/srv/%s", argv[1]);
mtpt = smprint("%s", argv[2]);
+ aname = smprint("");
+ break;
+ case 4:
+ domount = 1;
+ reallymount = 1;
+ srv = smprint("/srv/%s", argv[1]);
+ mtpt = smprint("%s", argv[2]);
+ aname = smprint("%s", argv[3]);
break;
- default:
- srv = mtpt = nil;
- usage();
}

try = 0;
@@ -197,8 +206,8 @@
if(domount == 0 || reallymount == 0)
exits(0);

- if((!doauth && mount(fd, -1, mtpt, mountflag, "") < 0)
- || (doauth && amount(fd, mtpt, mountflag, "") < 0)){
+ if((!doauth && mount(fd, -1, mtpt, mountflag, aname) < 0)
+ || (doauth && amount(fd, mtpt, mountflag, aname) < 0)){
err[0] = 0;
errstr(err, sizeof err);
if(strstr(err, "Hangup") || strstr(err, "hungup") || strstr(err, "timed out")){
--- /sys/man/4/srv Tue Apr 1 04:01:38 2014
+++ /sys/man/4/srv Tue Apr 1 04:01:37 2014
@@ -36,7 +36,9 @@
.I srvname
[
.I mtpt
-] ]
+[
+.I aname
+] ] ]
.PP
.B 9fs
.RI [ net !] system
@@ -119,6 +121,8 @@
.I mount
(see
.IR bind (1)).
+.I Aname
+selects an file tree on the server other than the default.
The
.B e
option causes
Reply all
Reply to author
Forward
0 new messages