Merge from vendor branch DIFFUTILS:
[dragonfly.git] / test / caps / server.c
1 /*
2  * $DragonFly: src/test/caps/server.c,v 1.4 2004/03/06 22:15:00 dillon Exp $
3  */
4 #include <sys/types.h>
5 #include <sys/time.h>
6 #include <sys/caps.h>
7 #include <sys/errno.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <unistd.h>
12
13 int
14 main(int ac, char **av)
15 {
16     int cid;
17     int n;
18     int count;
19     char buf[256];
20     struct caps_msgid msgid;
21
22     count = 0;
23
24     cid = caps_sys_service("test", getuid(), getgid(), 0, CAPF_ANYCLIENT);
25     printf("cid = %d\n", cid);
26     if (cid < 0)
27         return(0);
28     bzero(&msgid, sizeof(msgid));
29     for (;;) {
30         n = caps_sys_wait(cid, buf, sizeof(buf), &msgid, NULL);
31 #ifdef DEBUG
32         printf("n = %d msgid=%016llx state=%d errno=%d\n", n, msgid.c_id, msgid.c_state, errno);
33         if (n > 0)
34             printf("BUFFER: %*.*s\n", n, n, buf);
35 #endif
36         if (msgid.c_state != CAPMS_DISPOSE)
37             n = caps_sys_reply(cid, "good", 4, msgid.c_id);
38 #ifdef DEBUG
39         printf("reply: n = %d\n", n);
40 #endif
41         if (++count % 1000000 == 0)
42                 caps_sys_setgen(cid, count);
43     }
44     return(0);
45 }
46