open: preserve error on failed open
write: handle offset correctly for fswrite
This commit is contained in:
parent
6c78172831
commit
c31f81ac8b
2 changed files with 4 additions and 1 deletions
|
|
@ -7,6 +7,7 @@
|
|||
CFid*
|
||||
fsopen(CFsys *fs, char *name, int mode)
|
||||
{
|
||||
char e[ERRMAX];
|
||||
CFid *fid;
|
||||
Fcall tx, rx;
|
||||
|
||||
|
|
@ -16,7 +17,9 @@ fsopen(CFsys *fs, char *name, int mode)
|
|||
tx.fid = fid->fid;
|
||||
tx.mode = mode;
|
||||
if(_fsrpc(fs, &tx, &rx, 0) < 0){
|
||||
rerrstr(e, sizeof e);
|
||||
fsclose(fid);
|
||||
errstr(e, sizeof e);
|
||||
return nil;
|
||||
}
|
||||
fid->mode = mode;
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ fspwrite(CFid *fid, void *buf, long n, vlong offset)
|
|||
want = n - tot;
|
||||
if(want > msize)
|
||||
want = msize;
|
||||
got = _fspwrite(fid, buf, want, offset);
|
||||
got = _fspwrite(fid, buf+tot, want, offset);
|
||||
first = 0;
|
||||
if(got < 0){
|
||||
if(tot == 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue