t9p: fix writen (sqweek) - 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 dfe57535afa96031add209ab71ef052178951aec
 (DIR) parent 3e4ceac760d5b2b7238cb27d13045df76c6d4c20
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Thu, 19 Jun 2008 23:07:48 -0400
       
       9p: fix writen (sqweek)
       
       Diffstat:
         M src/cmd/9p.c                        |      21 +++++++++++++--------
       
       1 file changed, 13 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9p.c b/src/cmd/9p.c
       t@@ -28,16 +28,21 @@ usage(void)
        int
        writen(int fd, void *buf, int n)
        {
       -        long m, tot;
       +        int m, tot;
        
       -        for(tot=0; tot<n; tot+=m){
       -                m = n - tot;
       -                if(m > 8192)
       -                        m = 8192;
       -                if(write(fd, (uchar*)buf+tot, m) != m)
       -                        break;
       +        if(n < 0){
       +                werrstr("bad count");
       +                return -1;
                }
       -        return tot;
       +        if(n == 0)
       +                return 0;
       +        
       +        tot = 0;
       +        while((m = write(fd, (char*)buf+tot, n-tot)) > 0)
       +                tot += m;
       +        if(tot < n)
       +                return -1;
       +        return n;
        }
        
        CFsys *(*nsmnt)(char*, char*) = nsamount;