mirror of https://github.com/0intro/wmii
Add clientutil.c
This commit is contained in:
parent
e3bea241be
commit
c9162ecb45
|
@ -0,0 +1,50 @@
|
|||
#define IXP_NO_P9_
|
||||
#define IXP_P9_STRUCTS
|
||||
#define CLIENTEXTERN
|
||||
#include <string.h>
|
||||
#include <ixp.h>
|
||||
#include <clientutil.h>
|
||||
#include <util.h>
|
||||
|
||||
static IxpCFid* ctlfid;
|
||||
static char ctl[1024];
|
||||
static char* ectl;
|
||||
|
||||
char*
|
||||
readctl(char *key) {
|
||||
char *s, *p;
|
||||
int nkey, n;
|
||||
|
||||
if(ctlfid == nil) {
|
||||
ctlfid = ixp_open(client, "ctl", OREAD);
|
||||
n = ixp_read(ctlfid, ctl, 1023);
|
||||
ectl = ctl + n;
|
||||
ixp_close(ctlfid);
|
||||
}
|
||||
|
||||
nkey = strlen(key);
|
||||
p = ctl - 1;
|
||||
do {
|
||||
p++;
|
||||
if(!strncmp(p, key, nkey)) {
|
||||
p += nkey;
|
||||
s = strchr(p, '\n');
|
||||
n = (s ? s : ectl) - p;
|
||||
s = freelater(emalloc(n + 1));
|
||||
s[n] = '\0';
|
||||
return strncpy(s, p, n);
|
||||
}
|
||||
} while((p = strchr(p, '\n')));
|
||||
return "";
|
||||
}
|
||||
|
||||
void
|
||||
client_init(char* address) {
|
||||
if(address && *address)
|
||||
client = ixp_mount(address);
|
||||
else
|
||||
client = ixp_nsmount("wmii");
|
||||
if(client == nil)
|
||||
fatal("can't mount: %r\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef CLIENTEXTERN
|
||||
# define CLIENTEXTERN extern
|
||||
#endif
|
||||
|
||||
char* readctl(char*);
|
||||
void client_init(char*);
|
||||
|
||||
CLIENTEXTERN IxpClient* client;
|
||||
|
Loading…
Reference in New Issue