wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit d675537a810a235ab03be90e8c7383ad2d2e4c00
parent 66a3d98ab98b546a4f1a6d4a41f5a4aefca578e0
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Tue,  7 Feb 2006 12:33:58 +0100

added tx and rx handler (not yet implemented, thus does not compile atm)


Diffstat:
cmd/wmiifs.c | 58++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 36 insertions(+), 22 deletions(-)

diff --git a/cmd/wmiifs.c b/cmd/wmiifs.c @@ -124,7 +124,6 @@ xmount(char *arg) } mnt->respond = ixp_server_open_conn(&srv, mnt->client.fd, rx_fcall, xclose_mount); - return nil; } @@ -217,7 +216,7 @@ mkqid(Qid *dir, char *wname, Qid *new, Bool iswalk) } static char * -xwalk(IXPConn *c, Fcall *fcall) +txwalk(IXPConn *c, Fcall *fcall) { unsigned short nwqid = 0; Qid dir = root_qid; @@ -292,7 +291,7 @@ map2mount(IXPMap *m) } static char * -xopen(IXPConn *c, Fcall *fcall) +txopen(IXPConn *c, Fcall *fcall) { IXPMap *m = ixp_server_fid2map(c, fcall->fid); Mount *mnt; @@ -364,7 +363,7 @@ type_to_stat(Stat *stat, char *name, Qid *dir) } static char * -xremove(IXPConn *c, Fcall *fcall) +txremove(IXPConn *c, Fcall *fcall) { IXPMap *m = ixp_server_fid2map(c, fcall->fid); unsigned short id = qpath_id(m->qid.path); @@ -384,7 +383,7 @@ xremove(IXPConn *c, Fcall *fcall) } static char * -xread(IXPConn *c, Fcall *fcall) +txread(IXPConn *c, Fcall *fcall) { Stat stat; IXPMap *m = ixp_server_fid2map(c, fcall->fid); @@ -471,7 +470,7 @@ xstat(IXPConn *c, Fcall *fcall) } static char * -xwrite(IXPConn *c, Fcall *fcall) +txwrite(IXPConn *c, Fcall *fcall) { char *err; char buf[256]; @@ -506,6 +505,21 @@ xwrite(IXPConn *c, Fcall *fcall) return nil; } + +char * +txclunk(IXPConn *c, Fcall *fcall) +{ + IXPMap *m = ixp_server_fid2map(c, fcall->fid); + + if(!m) + return Enofid; + cext_array_detach((void **)c->map, m, &c->mapsz); + free(m); + fcall->id = RCLUNK; + ixp_server_respond_fcall(c, fcall); + return nil; +} + static void rx_fcall(IXPConn *c) { @@ -516,15 +530,14 @@ rx_fcall(IXPConn *c) if((msize = ixp_server_receive_fcall(c, &fcall))) { /*fprintf(stderr, "fcall=%d\n", fcall.id);*/ switch(fcall.id) { - case TVERSION: errstr = wmii_ixp_version(c, &fcall); break; - case TATTACH: errstr = wmii_ixp_attach(c, &fcall); break; - case TWALK: errstr = xwalk(c, &fcall); break; - case TREMOVE: errstr = xremove(c, &fcall); break; - case TOPEN: errstr = xopen(c, &fcall); break; - case TREAD: errstr = xread(c, &fcall); break; - case TWRITE: errstr = xwrite(c, &fcall); break; - case TCLUNK: errstr = wmii_ixp_clunk(c, &fcall); break; - case TSTAT: errstr = xstat(c, &fcall); break; + case RWALK: errstr = rxwalk(c, &fcall); break; + case RREMOVE: errstr = rxremove(c, &fcall); break; + case RCREATE: errstr = rxcreate(c, &fcall); break; + case ROPEN: errstr = rxopen(c, &fcall); break; + case RREAD: errstr = rxread(c, &fcall); break; + case RWRITE: errstr = rxwrite(c, &fcall); break; + case RCLUNK: errstr = rxclunk(c, &fcall); break; + case RSTAT: errstr = rxstat(c, &fcall); break; default: errstr = Enofunc; break; } if(errstr) @@ -544,13 +557,14 @@ tx_fcall(IXPConn *c) switch(fcall.id) { case TVERSION: errstr = wmii_ixp_version(c, &fcall); break; case TATTACH: errstr = wmii_ixp_attach(c, &fcall); break; - case TWALK: errstr = xwalk(c, &fcall); break; - case TREMOVE: errstr = xremove(c, &fcall); break; - case TOPEN: errstr = xopen(c, &fcall); break; - case TREAD: errstr = xread(c, &fcall); break; - case TWRITE: errstr = xwrite(c, &fcall); break; - case TCLUNK: errstr = wmii_ixp_clunk(c, &fcall); break; - case TSTAT: errstr = xstat(c, &fcall); break; + case TWALK: errstr = txwalk(c, &fcall); break; + case TREMOVE: errstr = txremove(c, &fcall); break; + case TCREATE: errstr = txcreate(c, &fcall); break; + case TOPEN: errstr = txopen(c, &fcall); break; + case TREAD: errstr = txread(c, &fcall); break; + case TWRITE: errstr = txwrite(c, &fcall); break; + case TCLUNK: errstr = txclunk(c, &fcall); break; + case TSTAT: errstr = txstat(c, &fcall); break; default: errstr = Enofunc; break; } if(errstr)