make sure a write of 0 bytes does a 0-length write.
This commit is contained in:
parent
298f6bd657
commit
493f3d0fbf
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user