ref: 0ad44955a094502fa3bf9a5cef637bc62072f91c
parent: e524e96b88ffbd8b1f2c81ba5f3d77844e38860a
author: sirjofri <sirjofri@sirjofri.de>
date: Tue Dec 16 09:56:48 EST 2025
working read
--- a/fshandler.inc
+++ b/fshandler.inc
@@ -2,7 +2,19 @@
static void
fsread(Req *r)
{- respond(r, nil);
+ int q;
+ Filedata *fd;
+ void (*func)(Req *r);
+
+ q = breakqid(r->fid->qid.path);
+
+ fd = &filedata[q];
+ if (!fd->read) {+ respond(r, nil);
+ return;
+ }
+ fd->read(r);
+ /* if read is implemented, it should respond */
}
static void
@@ -20,8 +32,6 @@
q = breakqid(r->fid->qid.path);
- fprint(2, "stat: q: %d\n", q);
-
fd = &filedata[q];
r->d = fd->dir;
qidtype = q;
@@ -28,6 +38,7 @@
r->d.qid.path = makeqid(getqidhash(r->fid));
r->d.qid.vers = 0;
r->d.qid.type = fd->dir.mode&DMDIR ? QTDIR : QTFILE;
+ /* TODO: these names could leak memory! */
r->d.name = estrdup9p(fd->dir.name);
r->d.uid = estrdup9p("none"); r->d.gid = estrdup9p("none");@@ -112,7 +123,6 @@
qid->vers = 0;
qid->type = fd->dir.mode&DMDIR ? QTDIR : QTFILE;
fid->qid = *qid;
- fprint(2, "walk: QID: %d %d\n", qt, qid->type);
return nil;
}
--- a/preamble.inc
+++ b/preamble.inc
@@ -10,9 +10,9 @@
typedef struct Filedata Filedata;
struct Filedata {- void *read;
- void *write;
- void *stat;
+ void (*read)(Req*);
+ void (*write)(Req*);
+ void (*stat)(Req*);
Dir dir;
};
--
⑨