make sure a write of 0 bytes does a 0-length write.
This commit is contained in:
parent
298f6bd657
commit
493f3d0fbf
1 changed files with 4 additions and 2 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue