topen: preserve error on failed open write: handle offset correctly for fswrite - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit c31f81ac8b402e72acf552eb9b0740a700000e8b
 (DIR) parent 6c78172831f45937b48e96c2bba5bdd04196d020
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue,  1 Mar 2005 20:56:27 +0000
       
       open: preserve error on failed open
       write: handle offset correctly for fswrite
       
       Diffstat:
         M src/lib9pclient/open.c              |       3 +++
         M src/lib9pclient/write.c             |       2 +-
       
       2 files changed, 4 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/src/lib9pclient/open.c b/src/lib9pclient/open.c
       t@@ -7,6 +7,7 @@
        CFid*
        fsopen(CFsys *fs, char *name, int mode)
        {
       +        char e[ERRMAX];
                CFid *fid;
                Fcall tx, rx;
        
       t@@ -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;
 (DIR) diff --git a/src/lib9pclient/write.c b/src/lib9pclient/write.c
       t@@ -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)