diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/acme/addr.c | 1 | ||||
-rw-r--r-- | src/cmd/acme/fsys.c | 18 | ||||
-rw-r--r-- | src/cmd/acme/xfid.c | 8 |
3 files changed, 23 insertions, 4 deletions
diff --git a/src/cmd/acme/addr.c b/src/cmd/acme/addr.c index 4e31d6ae..7af5f6be 100644 --- a/src/cmd/acme/addr.c +++ b/src/cmd/acme/addr.c @@ -138,7 +138,6 @@ regexp(uint showerr, Text *t, Range lim, Range r, Rune *pat, int dir, int *found q = Infinity; else q = lim.q1; -warning(nil, "searching %d-%d\n", r.q1, q); found = rxexecute(t, nil, r.q1, q, &sel); } if(!found && showerr) diff --git a/src/cmd/acme/fsys.c b/src/cmd/acme/fsys.c index 66b935f8..536a3334 100644 --- a/src/cmd/acme/fsys.c +++ b/src/cmd/acme/fsys.c @@ -160,10 +160,24 @@ fsysproc(void *v) if(fcall[x->fcall.type] == 0) x = respond(x, &t, "bad fcall type"); else{ - if(x->fcall.type==Tversion || x->fcall.type==Tauth) + switch(x->fcall.type){ + case Tversion: + case Tauth: + case Tflush: f = nil; - else + break; + case Tattach: + f = newfid(x->fcall.fid); + break; + default: f = newfid(x->fcall.fid); + if(!f->busy){ + x->f = f; + x = respond(x, &t, "fid not in use"); + continue; + } + break; + } x->f = f; x = (*fcall[x->fcall.type])(x, f); } diff --git a/src/cmd/acme/xfid.c b/src/cmd/acme/xfid.c index 13d72957..579f1944 100644 --- a/src/cmd/acme/xfid.c +++ b/src/cmd/acme/xfid.c @@ -103,8 +103,14 @@ xfidopen(Xfid *x) q = FILE(x->f->qid); switch(q){ case QWaddr: + if(w->nopen[q]++ == 0){ + w->addr = range(0, 0); + w->limit = range(-1,-1); + } + break; + case QWdata: + case QWxdata: w->nopen[q]++; - w->limit = range(-1,-1); break; case QWevent: if(w->nopen[q]++ == 0){ |