plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit 07494878dc5ae11652cbe221cf9e2a20da94ca96
parent c91cfa9177ba734a4906dce29810845d3557650c
Author: rsc <devnull@localhost>
Date:   Thu, 27 Jan 2005 20:36:04 +0000

remove searching print; check fids in use; handle addr correctly again

Diffstat:
Msrc/cmd/acme/addr.c | 1-
Msrc/cmd/acme/fsys.c | 18++++++++++++++++--
Msrc/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 @@ -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 @@ -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 @@ -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){