make sure a write of 0 bytes does a 0-length write.

This commit is contained in:
rsc 2004-10-22 17:14:17 +00:00
parent 298f6bd657
commit 493f3d0fbf

View file

@ -43,16 +43,18 @@ _fspwrite(Fid *fid, void *buf, long n, vlong offset)
long long
fspwrite(Fid *fid, void *buf, long n, vlong offset) fspwrite(Fid *fid, void *buf, long n, vlong offset)
{ {
long tot, want, got; long tot, want, got, first;
uint msize; uint msize;
msize = fid->fs->msize - IOHDRSZ; msize = fid->fs->msize - IOHDRSZ;
tot = 0; tot = 0;
while(tot < n){ first = 1;
while(tot < n || first){
want = n - tot; want = n - tot;
if(want > msize) if(want > msize)
want = msize; want = msize;
got = _fspwrite(fid, buf, want, offset); got = _fspwrite(fid, buf, want, offset);
first = 0;
if(got < 0){ if(got < 0){
if(tot == 0) if(tot == 0)
return got; return got;