aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libfs/COPYRIGHT27
-rw-r--r--src/libfs/close.c26
-rw-r--r--src/libfs/create.c25
-rw-r--r--src/libfs/dirread.c100
-rw-r--r--src/libfs/fs.c309
-rw-r--r--src/libfs/fsimpl.h45
-rw-r--r--src/libfs/mkfile23
-rw-r--r--src/libfs/ns.c40
-rw-r--r--src/libfs/open.c24
-rw-r--r--src/libfs/openfd.c26
-rw-r--r--src/libfs/read.c72
-rw-r--r--src/libfs/stat.c54
-rw-r--r--src/libfs/walk.c73
-rw-r--r--src/libfs/write.c74
-rw-r--r--src/libfs/wstat.c49
15 files changed, 0 insertions, 967 deletions
diff --git a/src/libfs/COPYRIGHT b/src/libfs/COPYRIGHT
deleted file mode 100644
index de348d12..00000000
--- a/src/libfs/COPYRIGHT
+++ /dev/null
@@ -1,27 +0,0 @@
-
-This software was developed as part of a project at MIT:
- /sys/src/libfs/* except dirread.c
- /sys/include/fs.h
-
-Copyright (c) 2003 Russ Cox,
- Massachusetts Institute of Technology
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/src/libfs/close.c b/src/libfs/close.c
deleted file mode 100644
index 23388ae3..00000000
--- a/src/libfs/close.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-static void
-fidclunk(Fid *fid)
-{
- Fcall tx, rx;
-
- tx.type = Tclunk;
- tx.fid = fid->fid;
- fsrpc(fid->fs, &tx, &rx, 0);
- _fsputfid(fid);
-}
-
-void
-fsclose(Fid *fid)
-{
- /* maybe someday there will be a ref count */
- fidclunk(fid);
-}
diff --git a/src/libfs/create.c b/src/libfs/create.c
deleted file mode 100644
index ef52a2a8..00000000
--- a/src/libfs/create.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-Fid*
-fscreate(Fsys *fs, char *name, int mode, ulong perm)
-{
- Fid *fid;
- Fcall tx, rx;
-
- if((fid = fswalk(fs->root, name)) == nil)
- return nil;
- tx.type = Tcreate;
- tx.fid = fid->fid;
- tx.mode = mode;
- tx.perm = perm;
- if(fsrpc(fs, &tx, &rx, 0) < 0){
- fsclose(fid);
- return nil;
- }
- fid->mode = mode;
- return fid;
-}
diff --git a/src/libfs/dirread.c b/src/libfs/dirread.c
deleted file mode 100644
index 0ca40645..00000000
--- a/src/libfs/dirread.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Mostly copied from Plan 9's libc. */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-
-static
-long
-dirpackage(uchar *buf, long ts, Dir **d)
-{
- char *s;
- long ss, i, n, nn, m;
-
- *d = nil;
- if(ts <= 0)
- return 0;
-
- /*
- * first find number of all stats, check they look like stats, & size all associated strings
- */
- ss = 0;
- n = 0;
- for(i = 0; i < ts; i += m){
- m = BIT16SZ + GBIT16(&buf[i]);
- if(statcheck(&buf[i], m) < 0)
- break;
- ss += m;
- n++;
- }
-
- if(i != ts)
- return -1;
-
- *d = malloc(n * sizeof(Dir) + ss);
- if(*d == nil)
- return -1;
-
- /*
- * then convert all buffers
- */
- s = (char*)*d + n * sizeof(Dir);
- nn = 0;
- for(i = 0; i < ts; i += m){
- m = BIT16SZ + GBIT16((uchar*)&buf[i]);
- if(nn >= n || convM2D(&buf[i], m, *d + nn, s) != m){
- free(*d);
- *d = nil;
- return -1;
- }
- nn++;
- s += m;
- }
-
- return nn;
-}
-
-long
-fsdirread(Fid *fid, Dir **d)
-{
- uchar *buf;
- long ts;
-
- buf = malloc(DIRMAX);
- if(buf == nil)
- return -1;
- ts = fsread(fid, buf, DIRMAX);
- if(ts >= 0)
- ts = dirpackage(buf, ts, d);
- free(buf);
- return ts;
-}
-
-long
-fsdirreadall(Fid *fid, Dir **d)
-{
- uchar *buf, *nbuf;
- long n, ts;
-
- buf = nil;
- ts = 0;
- for(;;){
- nbuf = realloc(buf, ts+DIRMAX);
- if(nbuf == nil){
- free(buf);
- return -1;
- }
- buf = nbuf;
- n = fsread(fid, buf+ts, DIRMAX);
- if(n <= 0)
- break;
- ts += n;
- }
- if(ts >= 0)
- ts = dirpackage(buf, ts, d);
- free(buf);
- if(ts == 0 && n < 0)
- return -1;
- return ts;
-}
diff --git a/src/libfs/fs.c b/src/libfs/fs.c
deleted file mode 100644
index 9714ef60..00000000
--- a/src/libfs/fs.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include <thread.h>
-#include "fsimpl.h"
-
-static int _fssend(Mux*, void*);
-static void *_fsrecv(Mux*);
-static int _fsgettag(Mux*, void*);
-static int _fssettag(Mux*, void*, uint);
-
-enum
-{
- Fidchunk = 32
-};
-
-Fsys*
-fsinit(int fd)
-{
- Fsys *fs;
-
- fmtinstall('F', fcallfmt);
- fmtinstall('D', dirfmt);
- fmtinstall('M', dirmodefmt);
-
- fs = mallocz(sizeof(Fsys), 1);
- if(fs == nil)
- return nil;
- fs->fd = fd;
- fs->ref = 1;
- fs->mux.aux = fs;
- fs->mux.mintag = 0;
- fs->mux.maxtag = 256;
- fs->mux.send = _fssend;
- fs->mux.recv = _fsrecv;
- fs->mux.gettag = _fsgettag;
- fs->mux.settag = _fssettag;
- fs->iorecv = ioproc();
- fs->iosend = ioproc();
- muxinit(&fs->mux);
- return fs;
-}
-
-Fid*
-fsroot(Fsys *fs)
-{
- /* N.B. no incref */
- return fs->root;
-}
-
-Fsys*
-fsmount(int fd, char *aname)
-{
- int n;
- char *user;
- Fsys *fs;
-
- fs = fsinit(fd);
- if(fs == nil)
- return nil;
- strcpy(fs->version, "9P2000");
- if((n = fsversion(fs, 8192, fs->version, sizeof fs->version)) < 0){
- Error:
- fs->fd = -1;
- fsunmount(fs);
- return nil;
- }
- fs->msize = n;
-
- user = getuser();
- if((fs->root = fsattach(fs, nil, getuser(), aname)) == nil)
- goto Error;
- return fs;
-}
-
-void
-fsunmount(Fsys *fs)
-{
- fsclose(fs->root);
- fs->root = nil;
- _fsdecref(fs);
-}
-
-void
-_fsdecref(Fsys *fs)
-{
- Fid *f, **l, *next;
-
- qlock(&fs->lk);
- --fs->ref;
- //fprint(2, "fsdecref %p to %d\n", fs, fs->ref);
- if(fs->ref == 0){
- close(fs->fd);
- /* trim the list down to just the first in each chunk */
- for(l=&fs->freefid; *l; ){
- if((*l)->fid%Fidchunk == 0)
- l = &(*l)->next;
- else
- *l = (*l)->next;
- }
- /* now free the list */
- for(f=fs->freefid; f; f=next){
- next = f->next;
- free(f);
- }
- closeioproc(fs->iorecv);
- closeioproc(fs->iosend);
- free(fs);
- return;
- }
- qunlock(&fs->lk);
-}
-
-int
-fsversion(Fsys *fs, int msize, char *version, int nversion)
-{
- void *freep;
- Fcall tx, rx;
-
- tx.tag = 0;
- tx.type = Tversion;
- tx.version = version;
- tx.msize = msize;
-
- if(fsrpc(fs, &tx, &rx, &freep) < 0)
- return -1;
- strecpy(version, version+nversion, rx.version);
- free(freep);
- return rx.msize;
-}
-
-Fid*
-fsattach(Fsys *fs, Fid *afid, char *user, char *aname)
-{
- Fcall tx, rx;
- Fid *fid;
-
- if(aname == nil)
- aname = "";
-
- if((fid = _fsgetfid(fs)) == nil)
- return nil;
-
- tx.tag = 0;
- tx.type = Tattach;
- tx.afid = afid ? afid->fid : NOFID;
- tx.fid = fid->fid;
- tx.uname = user;
- tx.aname = aname;
-
- if(fsrpc(fs, &tx, &rx, 0) < 0){
- _fsputfid(fid);
- return nil;
- }
- fid->qid = rx.qid;
- return fid;
-}
-
-int
-fsrpc(Fsys *fs, Fcall *tx, Fcall *rx, void **freep)
-{
- int n, nn;
- void *tpkt, *rpkt;
-
- n = sizeS2M(tx);
- tpkt = malloc(n);
- if(freep)
- *freep = nil;
- if(tpkt == nil)
- return -1;
- //fprint(2, "<- %F\n", tx);
- nn = convS2M(tx, tpkt, n);
- if(nn != n){
- free(tpkt);
- werrstr("libfs: sizeS2M convS2M mismatch");
- fprint(2, "%r\n");
- return -1;
- }
- rpkt = muxrpc(&fs->mux, tpkt);
- free(tpkt);
- if(rpkt == nil)
- return -1;
- n = GBIT32((uchar*)rpkt);
- nn = convM2S(rpkt, n, rx);
- if(nn != n){
- free(rpkt);
- werrstr("libfs: convM2S packet size mismatch %d %d", n, nn);
- fprint(2, "%r\n");
- return -1;
- }
- //fprint(2, "-> %F\n", rx);
- if(rx->type == Rerror){
- werrstr("%s", rx->ename);
- free(rpkt);
- return -1;
- }
- if(rx->type != tx->type+1){
- werrstr("packet type mismatch -- tx %d rx %d",
- tx->type, rx->type);
- free(rpkt);
- return -1;
- }
- if(freep)
- *freep = rpkt;
- else
- free(rpkt);
- return 0;
-}
-
-Fid*
-_fsgetfid(Fsys *fs)
-{
- int i;
- Fid *f;
-
- qlock(&fs->lk);
- if(fs->freefid == nil){
- f = mallocz(sizeof(Fid)*Fidchunk, 1);
- if(f == nil){
- qunlock(&fs->lk);
- return nil;
- }
- for(i=0; i<Fidchunk; i++){
- f[i].fid = fs->nextfid++;
- f[i].next = &f[i+1];
- f[i].fs = fs;
- }
- f[i-1].next = nil;
- fs->freefid = f;
- }
- f = fs->freefid;
- fs->freefid = f->next;
- fs->ref++;
- qunlock(&fs->lk);
- return f;
-}
-
-void
-_fsputfid(Fid *f)
-{
- Fsys *fs;
-
- fs = f->fs;
- qlock(&fs->lk);
- f->next = fs->freefid;
- fs->freefid = f;
- qunlock(&fs->lk);
- _fsdecref(fs);
-}
-
-static int
-_fsgettag(Mux *mux, void *pkt)
-{
- return GBIT16((uchar*)pkt+5);
-}
-
-static int
-_fssettag(Mux *mux, void *pkt, uint tag)
-{
- PBIT16((uchar*)pkt+5, tag);
- return 0;
-}
-
-static int
-_fssend(Mux *mux, void *pkt)
-{
- Fsys *fs;
-
- fs = mux->aux;
- return iowrite(fs->iosend, fs->fd, pkt, GBIT32((uchar*)pkt));
-}
-
-static void*
-_fsrecv(Mux *mux)
-{
- uchar *pkt;
- uchar buf[4];
- int n, nfd;
- Fsys *fs;
-
- fs = mux->aux;
- n = ioreadn(fs->iorecv, fs->fd, buf, 4);
- if(n != 4)
- return nil;
- n = GBIT32(buf);
- pkt = malloc(n+4);
- if(pkt == nil){
- fprint(2, "libfs out of memory reading 9p packet; here comes trouble\n");
- return nil;
- }
- PBIT32(pkt, n);
- if(ioreadn(fs->iorecv, fs->fd, pkt+4, n-4) != n-4){
- free(pkt);
- return nil;
- }
- if(pkt[4] == Ropenfd){
- if((nfd=iorecvfd(fs->iorecv, fs->fd)) < 0){
- fprint(2, "recv fd error: %r\n");
- free(pkt);
- return nil;
- }
- PBIT32(pkt+n-4, nfd);
- }
- return pkt;
-}
diff --git a/src/libfs/fsimpl.h b/src/libfs/fsimpl.h
deleted file mode 100644
index 59cecaa5..00000000
--- a/src/libfs/fsimpl.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <thread.h>
-
-typedef struct Queue Queue;
-Queue *_fsqalloc(void);
-int _fsqsend(Queue*, void*);
-void *_fsqrecv(Queue*);
-void _fsqhangup(Queue*);
-void *_fsnbqrecv(Queue*);
-
-#include <mux.h>
-struct Fsys
-{
- char version[20];
- int msize;
- QLock lk;
- int fd;
- int ref;
- Mux mux;
- Fid *root;
- Queue *txq;
- Queue *rxq;
- Fid *freefid;
- int nextfid;
- Ioproc *iorecv;
- Ioproc *iosend;
-};
-
-struct Fid
-{
- int fid;
- int mode;
- Fid *next;
- QLock lk;
- Fsys *fs;
- Qid qid;
- vlong offset;
-};
-
-void _fsdecref(Fsys*);
-void _fsputfid(Fid*);
-Fid *_fsgetfid(Fsys*);
-
diff --git a/src/libfs/mkfile b/src/libfs/mkfile
deleted file mode 100644
index 17d197ec..00000000
--- a/src/libfs/mkfile
+++ /dev/null
@@ -1,23 +0,0 @@
-<$PLAN9/src/mkhdr
-
-LIB=libfs.a
-
-OFILES=\
- close.$O\
- create.$O\
- dirread.$O\
- fs.$O\
- ns.$O\
- open.$O\
- openfd.$O\
- read.$O\
- stat.$O\
- walk.$O\
- write.$O\
- wstat.$O\
-
-HFILES=\
- $PLAN9/include/fs.h\
- $PLAN9/include/mux.h\
-
-<$PLAN9/src/mksyslib
diff --git a/src/libfs/ns.c b/src/libfs/ns.c
deleted file mode 100644
index 763080ba..00000000
--- a/src/libfs/ns.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include <ctype.h>
-
-Fsys*
-nsmount(char *name, char *aname)
-{
- char *addr, *ns;
- int fd;
- Fsys *fs;
-
- ns = getns();
- if(ns == nil)
- return nil;
-
- addr = smprint("unix!%s/%s", ns, name);
- free(ns);
- if(addr == nil)
- return nil;
-
- fd = dial(addr, 0, 0, 0);
- if(fd < 0){
- werrstr("dial %s: %r", addr);
- free(addr);
- return nil;
- }
- free(addr);
-
- fcntl(fd, F_SETFL, FD_CLOEXEC);
-
- fs = fsmount(fd, aname);
- if(fs == nil){
- close(fd);
- return nil;
- }
-
- return fs;
-}
diff --git a/src/libfs/open.c b/src/libfs/open.c
deleted file mode 100644
index 458c5dac..00000000
--- a/src/libfs/open.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-Fid*
-fsopen(Fsys *fs, char *name, int mode)
-{
- Fid *fid;
- Fcall tx, rx;
-
- if((fid = fswalk(fs->root, name)) == nil)
- return nil;
- tx.type = Topen;
- tx.fid = fid->fid;
- tx.mode = mode;
- if(fsrpc(fs, &tx, &rx, 0) < 0){
- fsclose(fid);
- return nil;
- }
- fid->mode = mode;
- return fid;
-}
diff --git a/src/libfs/openfd.c b/src/libfs/openfd.c
deleted file mode 100644
index 9e48c791..00000000
--- a/src/libfs/openfd.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-int
-fsopenfd(Fsys *fs, char *name, int mode)
-{
- Fid *fid;
- Fcall tx, rx;
-
- if((fid = fswalk(fs->root, name)) == nil)
- return -1;
- tx.type = Topenfd;
- tx.fid = fid->fid;
- tx.mode = mode&~OCEXEC;
- if(fsrpc(fs, &tx, &rx, 0) < 0){
- fsclose(fid);
- return -1;
- }
- _fsputfid(fid);
- if(mode&OCEXEC && rx.unixfd>=0)
- fcntl(rx.unixfd, F_SETFL, FD_CLOEXEC);
- return rx.unixfd;
-}
diff --git a/src/libfs/read.c b/src/libfs/read.c
deleted file mode 100644
index f868e123..00000000
--- a/src/libfs/read.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-long
-fspread(Fid *fid, void *buf, long n, vlong offset)
-{
- Fcall tx, rx;
- void *freep;
- uint msize;
-
- msize = fid->fs->msize - IOHDRSZ;
- if(n > msize)
- n = msize;
- tx.type = Tread;
- tx.fid = fid->fid;
- if(offset == -1){
- qlock(&fid->lk);
- tx.offset = fid->offset;
- qunlock(&fid->lk);
- }else
- tx.offset = offset;
- tx.count = n;
-
- if(fsrpc(fid->fs, &tx, &rx, &freep) < 0)
- return -1;
- if(rx.type == Rerror){
- werrstr("%s", rx.ename);
- free(freep);
- return -1;
- }
- if(rx.count){
- memmove(buf, rx.data, rx.count);
- if(offset == -1){
- qlock(&fid->lk);
- fid->offset += rx.count;
- qunlock(&fid->lk);
- }
- }
- free(freep);
-
- return rx.count;
-}
-
-long
-fsread(Fid *fid, void *buf, long n)
-{
- return fspread(fid, buf, n, -1);
-}
-
-long
-fsreadn(Fid *fid, void *buf, long n)
-{
- long tot, nn;
-
- for(tot=0; tot<n; tot+=nn){
- nn = fsread(fid, (char*)buf+tot, n-tot);
- if(nn <= 0){
- if(tot == 0)
- return nn;
- break;
- }
- }
- return tot;
-}
-
-
diff --git a/src/libfs/stat.c b/src/libfs/stat.c
deleted file mode 100644
index e55e0b12..00000000
--- a/src/libfs/stat.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-Dir*
-fsdirstat(Fsys *fs, char *name)
-{
- Dir *d;
- Fid *fid;
-
- if((fid = fswalk(fs->root, name)) == nil)
- return nil;
-
- d = fsdirfstat(fid);
- fsclose(fid);
- return d;
-}
-
-Dir*
-fsdirfstat(Fid *fid)
-{
- Dir *d;
- Fsys *fs;
- Fcall tx, rx;
- void *freep;
- int n;
-
- fs = fid->fs;
- tx.type = Tstat;
- tx.fid = fid->fid;
-
- if(fsrpc(fs, &tx, &rx, &freep) < 0)
- return nil;
-
- d = malloc(sizeof(Dir)+rx.nstat);
- if(d == nil){
- free(freep);
- return nil;
- }
- n = convM2D(rx.stat, rx.nstat, d, (char*)&d[1]);
- free(freep);
- if(n != rx.nstat){
- free(d);
- werrstr("rx.nstat and convM2D disagree about dir length");
- return nil;
- }
- return d;
-}
-
diff --git a/src/libfs/walk.c b/src/libfs/walk.c
deleted file mode 100644
index ad4eddc7..00000000
--- a/src/libfs/walk.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-Fid*
-fswalk(Fid *fid, char *oname)
-{
- char *freep, *name;
- int i, nwalk;
- char *p;
- Fid *wfid;
- Fcall tx, rx;
-
- freep = nil;
- name = oname;
- if(name){
- freep = malloc(strlen(name)+1);
- if(freep == nil)
- return nil;
- strcpy(freep, name);
- name = freep;
- }
-
- if((wfid = _fsgetfid(fid->fs)) == nil){
- free(freep);
- return nil;
- }
-
- nwalk = 0;
- do{
- /* collect names */
- for(i=0; name && *name && i < MAXWELEM; ){
- p = name;
- name = strchr(name, '/');
- if(name)
- *name++ = 0;
- if(*p == 0)
- continue;
- tx.wname[i++] = p;
- }
-
- /* do a walk */
- tx.type = Twalk;
- tx.fid = nwalk ? wfid->fid : fid->fid;
- tx.newfid = wfid->fid;
- tx.nwname = i;
- if(fsrpc(fid->fs, &tx, &rx, 0) < 0){
- Error:
- free(freep);
- if(nwalk)
- fsclose(wfid);
- else
- _fsputfid(wfid);
- return nil;
- }
- if(rx.nwqid != tx.nwname){
- /* XXX lame error */
- werrstr("file '%s' not found", oname);
- goto Error;
- }
- if(rx.nwqid == 0)
- wfid->qid = fid->qid;
- else
- wfid->qid = rx.wqid[rx.nwqid-1];
- nwalk++;
- }while(name && *name);
- return wfid;
-}
diff --git a/src/libfs/write.c b/src/libfs/write.c
deleted file mode 100644
index e4b6253d..00000000
--- a/src/libfs/write.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-static long
-_fspwrite(Fid *fid, void *buf, long n, vlong offset)
-{
- Fcall tx, rx;
- void *freep;
-
- tx.type = Twrite;
- tx.fid = fid->fid;
- if(offset == -1){
- qlock(&fid->lk);
- tx.offset = fid->offset;
- qunlock(&fid->lk);
- }else
- tx.offset = offset;
- tx.count = n;
- tx.data = buf;
-
- if(fsrpc(fid->fs, &tx, &rx, &freep) < 0)
- return -1;
- if(rx.type == Rerror){
- werrstr("%s", rx.ename);
- free(freep);
- return -1;
- }
- if(offset == -1 && rx.count){
- qlock(&fid->lk);
- fid->offset += rx.count;
- qunlock(&fid->lk);
- }
- free(freep);
- return rx.count;
-}
-
-long
-fspwrite(Fid *fid, void *buf, long n, vlong offset)
-{
- long tot, want, got, first;
- uint msize;
-
- msize = fid->fs->msize - IOHDRSZ;
- tot = 0;
- first = 1;
- while(tot < n || first){
- want = n - tot;
- if(want > msize)
- want = msize;
- got = _fspwrite(fid, buf, want, offset);
- first = 0;
- 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);
-}
diff --git a/src/libfs/wstat.c b/src/libfs/wstat.c
deleted file mode 100644
index f1f14ea5..00000000
--- a/src/libfs/wstat.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
-/* See COPYRIGHT */
-
-#include <u.h>
-#include <libc.h>
-#include <fcall.h>
-#include <fs.h>
-#include "fsimpl.h"
-
-int
-fsdirwstat(Fsys *fs, char *name, Dir *d)
-{
- int n;
- Fid *fid;
-
- if((fid = fswalk(fs->root, name)) == nil)
- return -1;
-
- n = fsdirfwstat(fid, d);
- fsclose(fid);
- return n;
-}
-
-int
-fsdirfwstat(Fid *fid, Dir *d)
-{
- uchar *a;
- int n, nn;
- Fcall tx, rx;
-
- n = sizeD2M(d);
- a = malloc(n);
- if(a == nil)
- return -1;
- nn = convD2M(d, a, n);
- if(n != nn){
- werrstr("convD2M and sizeD2M disagree");
- free(a);
- return -1;
- }
-
- tx.type = Twstat;
- tx.fid = fid->fid;
- tx.stat = a;
- tx.nstat = n;
- n = fsrpc(fid->fs, &tx, &rx, 0);
- free(a);
- return n;
-}