|
|
1.1 root 1: #include "copyright.h"
2:
3: /* $Header: XLiHosts.c,v 11.12 87/08/06 16:45:02 newman Exp $ */
4: /* Copyright Massachusetts Institute of Technology 1986 */
5: /* This can really be considered an os dependent routine */
6:
7: #define NEED_REPLIES
8: #include "Xlibint.h"
9: /*
10: * can be freed using XFree.
11: */
12:
13: XHostAddress *XListHosts (dpy, nhosts, enabled)
14: register Display *dpy;
15: int *nhosts;
16: Bool *enabled;
17: {
18: register XHostAddress *outbuf, *op;
19: xListHostsReply reply;
20: long nbytes;
21: unsigned char *buf, *bp;
22: register int i;
23: register xListHostsReq *req;
24:
25: LockDisplay(dpy);
26: GetReq (ListHosts, req);
27:
28: if (!_XReply (dpy, (xReply *) &reply, 0, xFalse)) {
29: UnlockDisplay(dpy);
30: SyncHandle();
31: return (NULL);
32: }
33:
34: *enabled = reply.enabled;
35: *nhosts = reply.nHosts;
36: if (*nhosts == 0) {
37: UnlockDisplay(dpy);
38: SyncHandle();
39: return (NULL);
40: }
41:
42: nbytes = reply.length << 2; /* compute number of bytes in reply */
43: op = outbuf =
44: (XHostAddress *) Xmalloc (nbytes + *nhosts * sizeof (XHostAddress));
45: bp = buf = ((unsigned char *)outbuf) + *nhosts * sizeof (XHostAddress);
46:
47: _XRead (dpy, buf, nbytes);
48:
49: for (i = 0; i < *nhosts; i++) {
50: op->family = ((xHostEntry *) bp)->family;
51: op->length =((xHostEntry *) bp)->length;
52: op->address = (char *) (((xHostEntry *) bp) + 1);
53: bp += sizeof(xHostEntry) + (((op->length + 3) >> 2) << 2);
54: op++;
55: }
56:
57:
58: UnlockDisplay(dpy);
59: SyncHandle();
60:
61: return (outbuf);
62: }
63:
64:
65:
66:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.