mirror of
https://github.com/0intro/wmii
synced 2025-02-20 16:24:41 +03:00
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
/*
|
|
* (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
|
|
* See LICENSE file for license details.
|
|
*/
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "wmii.h"
|
|
|
|
/* default handler */
|
|
|
|
char *
|
|
wmii_ixp_version(IXPConn *c, Fcall *fcall)
|
|
{
|
|
if(strncmp(fcall->version, IXP_VERSION, strlen(IXP_VERSION)))
|
|
return E9pversion;
|
|
else if(fcall->maxmsg > IXP_MAX_MSG)
|
|
fcall->maxmsg = IXP_MAX_MSG;
|
|
fcall->id = RVERSION;
|
|
ixp_server_respond_fcall(c, fcall);
|
|
return nil;
|
|
}
|
|
|
|
char *
|
|
wmii_ixp_attach(IXPConn *c, Fcall *fcall)
|
|
{
|
|
IXPMap *new = cext_emallocz(sizeof(IXPMap));
|
|
new->qid = root_qid;
|
|
new->fid = fcall->fid;
|
|
c->map = (IXPMap **)cext_array_attach((void **)c->map, new,
|
|
sizeof(IXPMap *), &c->mapsz);
|
|
fcall->id = RATTACH;
|
|
fcall->qid = root_qid;
|
|
ixp_server_respond_fcall(c, fcall);
|
|
return nil;
|
|
}
|
|
|
|
char *
|
|
wmii_ixp_clunk(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;
|
|
}
|