Add clientutil.c

This commit is contained in:
Kris Maglione 2009-05-13 23:44:42 -04:00
parent e3bea241be
commit c9162ecb45
2 changed files with 59 additions and 0 deletions

50
cmd/clientutil.c Normal file
View File

@ -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");
}

9
include/clientutil.h Normal file
View File

@ -0,0 +1,9 @@
#ifndef CLIENTEXTERN
# define CLIENTEXTERN extern
#endif
char* readctl(char*);
void client_init(char*);
CLIENTEXTERN IxpClient* client;