commit - 9cfbc441e736b579cc6d9c4369895a9b5c34a7c0
commit + 9777187bc7259526e1edcdaa1cc5d593616a32a4
blob - 81e4a653acbe2dd6881f9f6c7eee40d4587ccc77
blob + 01a9f86dc9afae0af388ae0af98ab5999742f983
--- src/cmd/9pserve.c
+++ src/cmd/9pserve.c
int ref;
int cfid;
int openfd;
+ int offset;
+ int coffset;
int isdir;
Fid *next;
};
continue;
}
}
+ if(m->tx.type==Tread && m->fid->isdir && dotu && !c->dotu){
+ if(m->tx.offset = m->fid->coffset)
+ m->tx.offset = m->fid->offset;
+ else
+ m->fid->offset = m->fid->coffset;
+ }
break;
}
fidput(m->newfid);
break;
case Tread:
- if(!err && m->fid->isdir && dotu && !m->c->dotu)
+ if(!err && m->fid->isdir && dotu && !m->c->dotu){
+ m->fid->offset += m->rx.count;
stripudirread(m);
+ m->fid->coffset += m->rx.count;
+ }
break;
case Tstat:
if(!err && dotu && !m->c->dotu)
freefid = f->next;
f->cfid = cfid;
f->ref = 1;
+ f->offset = 0;
+ f->coffset = 0;
f->isdir = -1;
return f;
}
restring(pkt, n, f->name);
/* fall through */
case Topen:
- case Tread:
- case Twrite:
case Tclunk:
case Tremove:
case Tstat:
case Twstat:
+ case Twrite:
PBIT32(pkt+7, f->fid);
break;
+ case Tread:
+ PBIT32(pkt+7, f->fid);
+ PBIT64(pkt+11, f->offset);
+ break;
case Rerror:
restring(pkt, n, f->ename);
break;