From 7781741266783e4df3b35d42a55e8e504838898b Mon Sep 17 00:00:00 2001 From: forsyth Date: Sun, 1 Aug 2010 12:55:40 +0100 Subject: 20100801 --- emu/port/devtk.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'emu/port/devtk.c') diff --git a/emu/port/devtk.c b/emu/port/devtk.c index 6f31967b..a64f6dcb 100644 --- a/emu/port/devtk.c +++ b/emu/port/devtk.c @@ -4,8 +4,8 @@ #include -#include "image.h" -#include +#include "draw.h" +#include #include #include @@ -15,7 +15,9 @@ enum{ }; static -Dirtab tkdirtab[]={ +Dirtab tkdirtab[]= +{ + ".", {Qdir, 0, QTDIR}, 0, DMDIR|0555, "tkevents", {Qtkevents, 0}, 0, 0600, }; @@ -32,6 +34,9 @@ tkwiretapper(void *top, char *cmd, char *result, void *image, Rectangle *rp) int n; char *s, *e; +//fprint(2, "wiretap %p %q %q\n", top, cmd, result); + if(tkevents.eq == nil) + return; n = 12; if(cmd != nil) n += strlen(cmd)+2+1; @@ -71,6 +76,9 @@ tkwiretapper(void *top, char *cmd, char *result, void *image, Rectangle *rp) } if(tkevents.eq != nil) qbwrite(tkevents.eq, b); + else + freeb(b); + poperror(); qunlock(&tkevents.l); acquire(); } @@ -84,16 +92,16 @@ tkattach(char* spec) return devattach(L'τ', spec); } -static int -tkwalk(Chan* c, char* name) +static Walkqid* +tkwalk(Chan *c, Chan *nc, char **name, int nname) { - return devwalk(c, name, tkdirtab, nelem(tkdirtab), devgen); + return devwalk(c, nc, name, nname, tkdirtab, nelem(tkdirtab), devgen); } -static void -tkstat(Chan* c, char* db) +static int +tkstat(Chan *c, uchar *db, int n) { - devstat(c, db, tkdirtab, nelem(tkdirtab), devgen); + return devstat(c, db, n, tkdirtab, nelem(tkdirtab), devgen); } static Chan* @@ -134,9 +142,10 @@ static long tkread(Chan* c, void* a, long n, vlong offset) { USED(offset); - switch(c->qid.path & ~CHDIR){ - case Qdir: + if(c->qid.type & QTDIR) return devdirread(c, a, n, tkdirtab, nelem(tkdirtab), devgen); + + switch((ulong)c->qid.path){ case Qtkevents: return qread(tkevents.eq, a, n); default: @@ -162,7 +171,6 @@ Dev tkdevtab = { devinit, tkattach, // devdetach, - devclone, tkwalk, tkstat, tkopen, -- cgit v1.2.3