1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include <auth.h>
5 #include "imap4d.h"
6
7 /*
8 * query the connection server
9 */
10 char*
csquery(char * attr,char * val,char * rattr)11 csquery(char *attr, char *val, char *rattr)
12 {
13 char token[64+4];
14 char buf[256], *p, *sp;
15 int fd, n;
16
17 if(val == nil || val[0] == 0)
18 return nil;
19 fd = open("/net/cs", ORDWR);
20 if(fd < 0)
21 return nil;
22 fprint(fd, "!%s=%s", attr, val);
23 seek(fd, 0, 0);
24 snprint(token, sizeof(token), "%s=", rattr);
25 for(;;){
26 n = read(fd, buf, sizeof(buf)-1);
27 if(n <= 0)
28 break;
29 buf[n] = 0;
30 p = strstr(buf, token);
31 if(p != nil && (p == buf || *(p-1) == 0)){
32 close(fd);
33 sp = strchr(p, ' ');
34 if(sp)
35 *sp = 0;
36 p = strchr(p, '=');
37 if(p == nil)
38 return nil;
39 return strdup(p+1);
40 }
41 }
42 close(fd);
43 return nil;
44 }
45