open: preserve error on failed open
write: handle offset correctly for fswrite
diff --git a/src/lib9pclient/open.c b/src/lib9pclient/open.c
index e9fb981..2317bbb 100644
--- a/src/lib9pclient/open.c
+++ b/src/lib9pclient/open.c
@@ -7,6 +7,7 @@
CFid*
fsopen(CFsys *fs, char *name, int mode)
{
+ char e[ERRMAX];
CFid *fid;
Fcall tx, rx;
@@ -16,7 +17,9 @@
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;