10 void post(char*, int);
11 void mountfs(char*, int);
18 fprint(2, "usage: %s [-abcCmnNq] [net!]host [srvname [mtpt]]\n", argv0);
19 fprint(2, " or %s -e [-abcCmnNq] command [srvname [mtpt]]\n", argv0);
25 ignore(void *a, char *c)
28 if(strcmp(c, "alarm") == 0){
29 fprint(2, "srv: timeout establishing connection to %s\n", dest);
32 if(strstr(c, "write on closed pipe") == 0){
33 fprint(2, "write on closed pipe\n");
48 fprint(2, "fork failed: %r\n");
56 execl("/bin/rc", "rc", "-c", cmd, nil);
57 fprint(2, "exec failed: %r\n");
66 main(int argc, char *argv[])
73 int domount, reallymount, try, sleeptime;
121 /* deprecated -r flag; ignored for compatibility */
124 sleeptime = atoi(EARGF(usage()));
131 if((mountflag&MAFTER)&&(mountflag&MBEFORE))
135 case 1: /* calculate srv and mtpt from address */
136 p = strrchr(argv[0], '/');
137 p = p ? p+1 : argv[0];
138 srv = smprint("/srv/%s", p);
141 mtpt = smprint("/n/%s", p2);
143 case 2: /* calculate mtpt from address, srv given */
144 srv = smprint("/srv/%s", argv[1]);
145 p = strrchr(argv[0], '/');
146 p = p ? p+1 : argv[0];
149 mtpt = smprint("/n/%s", p2);
151 case 3: /* srv and mtpt given */
154 srv = smprint("/srv/%s", argv[1]);
155 mtpt = smprint("%s", argv[2]);
167 if(access(srv, 0) == 0){
169 fd = open(srv, ORDWR);
175 fprint(2, "srv: %s already exists\n", srv);
182 fd = connectcmd(dest);
184 dest = netmkaddr(dest, 0, "9fs");
185 fd = dial(dest, 0, dir, 0);
188 fprint(2, "srv: dial %s: %r\n", dest);
194 fprint(2, "sleep...");
195 sleep(sleeptime*1000);
201 if(domount == 0 || reallymount == 0)
205 try = open("#c/user", OWRITE);
206 if(try < 0 || write(try, "none", 4) != 4){
207 fprint(2, "srv %s: can't become none: %r\n", dest);
213 if((!doauth && mount(fd, -1, mtpt, mountflag, "") < 0)
214 || (doauth && amount(fd, mtpt, mountflag, "") < 0)){
216 errstr(err, sizeof err);
217 if(strstr(err, "Hangup") || strstr(err, "hungup") || strstr(err, "timed out")){
222 fprint(2, "srv %s: mount failed: %s\n", dest, err);
229 post(char *srv, int fd)
234 fprint(2, "post...\n");
235 f = create(srv, OWRITE, 0666);
237 sprint(buf, "create(%s)", srv);
240 sprint(buf, "%d", fd);
241 if(write(f, buf, strlen(buf)) != strlen(buf))
248 fprint(2, "srv %s: %s: %r\n", dest, s);