Fix Plan 9 partial write() return values
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 25 May 2017 20:07:33 +0000 (16:07 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 25 May 2017 20:07:33 +0000 (16:07 -0400)
We were returning the value that the user attempted to write, not the
amount that actually made it.

Note that the proper way for a device to return -1 is to throw an error(),
which we catch in rwrite().  If a device's write method actually returns
-1, that'll screw things up.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/ns/sysfile.c

index 4c52336..16cd623 100644 (file)
@@ -1019,7 +1019,7 @@ static long rwrite(int fd, void *va, long n, int64_t * offp)
        cclose(c);
 
        poperror();
        cclose(c);
 
        poperror();
-       return n;
+       return m;
 }
 
 long syswrite(int fd, void *va, long n)
 }
 
 long syswrite(int fd, void *va, long n)