Fighting the good fight.
Move libfmt, libutf into subdirectories of lib9.
Add poll-based socket i/o to libthread, so that we can
avoid using multiple procs when possible, thus removing
dependence on crappy pthreads implementations.
Convert samterm, acme to the single-proc libthread.
Bring libcomplete, acme up-to-date w.r.t. Plan 9 distribution.
diff --git a/src/libfs/write.c b/src/libfs/write.c
index 5652b49..bae2083 100644
--- a/src/libfs/write.c
+++ b/src/libfs/write.c
@@ -7,8 +7,8 @@
#include <fs.h>
#include "fsimpl.h"
-long
-fspwrite(Fid *fid, void *buf, long n, vlong offset)
+static long
+_fspwrite(Fid *fid, void *buf, long n, vlong offset)
{
Fcall tx, rx;
void *freep;
@@ -40,6 +40,31 @@
}
long
+fspwrite(Fid *fid, void *buf, long n, vlong offset)
+{
+ long tot, want, got;
+ uint msize;
+
+ msize = fid->fs->msize - IOHDRSZ;
+ tot = 0;
+ while(tot < n){
+ want = n - tot;
+ if(want > msize)
+ want = msize;
+ got = _fspwrite(fid, buf, want, offset);
+ if(got < 0){
+ if(tot == 0)
+ return got;
+ break;
+ }
+ tot += got;
+ if(offset != -1)
+ offset += got;
+ }
+ return tot;
+}
+
+long
fswrite(Fid *fid, void *buf, long n)
{
return fspwrite(fid, buf, n, -1);