23 spec = r->ifcall.aname;
25 respond(r, "invalid attach specifier");
28 r->ofcall.qid = (Qid){Qroot, 0, QTDIR};
29 r->fid->qid = r->ofcall.qid;
34 fswalk1(Fid *fid, char *name, Qid *qid)
36 switch((int)fid->qid.path){
38 return "path not found";
40 if(strcmp(name, "..") == 0)
42 if(strcmp(name, kidname) == 0){
43 fid->qid = (Qid){Qkid, 0, kidmode>>24};
46 return "path not found";
48 if(strcmp(name, "..") == 0){
49 fid->qid = (Qid){Qroot, 0, QTDIR};
52 return "path not found";
65 memset(d, 0, sizeof *d);
70 d->name = estrdup9p("/");
75 d->name = estrdup9p(kidname);
80 d->atime = d->mtime = time0;
81 d->uid = estrdup9p("stub");
82 d->gid = estrdup9p("stub");
83 d->muid = estrdup9p("");
88 dirgen(int off, Dir *d, void*)
93 memset(d, 0, sizeof *d);
94 d->atime = d->mtime = time0;
95 d->name = estrdup9p(kidname);
97 d->qid = (Qid){Qkid, 0, kidmode>>24};
98 d->qid.type = d->mode>>24;
99 d->uid = estrdup9p("stub");
100 d->gid = estrdup9p("stub");
101 d->muid = estrdup9p("");
110 q = r->fid->qid.path;
117 dirread9p(r, dirgen, nil);
126 respond(r, "no writing");
132 if(r->fid->qid.path != Qroot){
133 respond(r, "permission denied");
137 if(r->ifcall.mode != OREAD)
138 respond(r, "permission denied");
155 fprint(2, "usage: aux/stub [-Dd] path/name\n");
160 main(int argc, char **argv)
181 if((p = strrchr(argv[0], '/')) == 0){
184 }else if(p == argv[0]){
192 postmountsrv(&fs, nil, mtpt, MBEFORE);