t9p: fix writen (sqweek) - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit dfe57535afa96031add209ab71ef052178951aec
parent 3e4ceac760d5b2b7238cb27d13045df76c6d4c20
Author: Russ Cox 
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(-)
---
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 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;