|
|
1.1 root 1: /*
2: * Xlib include file for 4.2BSD based systems.
3: */
4:
5: #include <netinet/in.h>
6: #include <sys/ioctl.h>
7: #include <netdb.h>
8:
9: #include <sys/uio.h> /* needed for XlibInt.c */
10:
11: #include <sys/param.h> /* needed for XConnDis.c */
12:
13: #define MAXSOCKS ( NOFILE - 1 )
14: #define MSKCNT ((MAXSOCKS + 31) / 32) /* size of bit array */
15:
16: #if (MSKCNT==1)
17: #define BITMASK(i) (1 << (i))
18: #define MASKIDX(i) 0
19: #endif
20: #if (MSKCNT>1)
21: #define BITMASK(i) (1 << ((i) & 31))
22: #define MASKIDX(i) ((i) >> 5)
23: #endif
24:
25: #define MASKWORD(buf, i) buf[MASKIDX(i)]
26: #define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i)
27: #define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i)
28: #define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i))
29:
30: #if (MSKCNT==1)
31: #define COPYBITS(src, dst) dst[0] = src[0]
32: #define CLEARBITS(buf) buf[0] = 0
33: #define MASKANDSETBITS(dst, b1, b2) dst[0] = (b1[0] & b2[0])
34: #define ORBITS(dst, b1, b2) dst[0] = (b1[0] | b2[0])
35: #define UNSETBITS(dst, b1) (dst[0] &= ~b1[0])
36: #define ANYSET(src) (src[0])
37: #endif
38: #if (MSKCNT==2)
39: #define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; }
40: #define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; }
41: #define MASKANDSETBITS(dst, b1, b2) {\
42: dst[0] = (b1[0] & b2[0]);\
43: dst[1] = (b1[1] & b2[1]); }
44: #define ORBITS(dst, b1, b2) {\
45: dst[0] = (b1[0] | b2[0]);\
46: dst[1] = (b1[1] | b2[1]); }
47: #define UNSETBITS(dst, b1) {\
48: dst[0] &= ~b1[0]; \
49: dst[1] &= ~b1[1]; }
50: #define ANYSET(src) (src[0] || src[1])
51: #endif
52: #if (MSKCNT==3)
53: #define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; }
54: #define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; buf[2] = 0; }
55: #define MASKANDSETBITS(dst, b1, b2) {\
56: dst[0] = (b1[0] & b2[0]);\
57: dst[1] = (b1[1] & b2[1]);\
58: dst[2] = (b1[2] & b2[2]); }
59: #define ORBITS(dst, b1, b2) {\
60: dst[0] = (b1[0] | b2[0]);\
61: dst[1] = (b1[1] | b2[1]);\
62: dst[2] = (b1[2] | b2[2]); }
63: #define UNSETBITS(dst, b1) {\
64: dst[0] &= ~b1[0]; \
65: dst[1] &= ~b1[1]; \
66: dst[2] &= ~b1[2]; }
67: #define ANYSET(src) (src[0] || src[1] || src[2])
68: #endif
69: #if (MSKCNT>3)
70: #define COPYBITS(src, dst) bcopy((caddr_t) src, (caddr_t) dst,\
71: MSKCNT*sizeof(long))
72: #define CLEARBITS(buf) bzero((caddr_t) buf, MSKCNT*sizeof(long))
73: #define MASKANDSETBITS(dst, b1, b2) { int cri;\
74: for (cri=0; i<MSKCNT; cri++) \
75: dst[cri] = (b1[cri] & b2[cri]); }
76: #define ORBITS(dst, b1, b2) { int cri;\
77: for (cri=0; i<MSKCNT; cri++) \
78: dst[cri] = (b1[cri] | b2[cri]); }
79: #define UNSETBITS(dst, b1) { int cri;\
80: for (cri=0; i<MSKCNT; cri++) \
81: dst[cri] &= ~b1[cri]; }
82: #define ANYSET(src) (src[0] || src[1] || src[2])
83: #endif
84:
85: char *malloc(), *realloc(), *calloc(), *alloca();
86:
87: char *strncpy(), *strncat();
88:
89: void exit();
90: void bcopy();
91: void perror();
92: void free();
93:
94: #define LockDisplay(dis)
95: #define LockMutex(mutex)
96: #define UnlockMutex(mutex)
97: #define UnlockDisplay(dis)
98: #define Xfree(ptr) free((ptr))
99: #define Xalloca(size) alloca((size))
100: /*
101: * Note that some machines do not return a valid pointer for malloc(0), in
102: * which case we provide an alternate under the control of the
103: * define MALLOC_0_RETURNS_NULL. This is necessary because some
104: * Xlib code expects malloc(0) to return a valid pointer to storage.
105: */
106: #ifdef MALLOC_0_RETURNS_NULL
107:
108: # define Xmalloc(size) malloc(max((size),1))
109: # define Xrealloc(ptr, size) realloc((ptr), max((size),1))
110: # define Xcalloc(nelem, elsize) calloc(max((nelem),1), (elsize))
111:
112: #else
113:
114: # define Xmalloc(size) malloc((size))
115: # define Xrealloc(ptr, size) realloc((ptr), (size))
116: # define Xcalloc(nelem, elsize) calloc((nelem), (elsize))
117:
118: #endif
119:
120: #define BytesReadable(fd, ptr) ioctl ((fd), FIONREAD, (ptr))
121: #define ReadFromServer(dpy, data, size) read((dpy), (data), (size))
122: #define ReadvFromServer(dpy, iov, iovcnt) readv((dpy), (iov), (iovcnt))
123: #define WriteToServer(dpy, bufind, size) write((dpy), (bufind), (size))
124: #define WritevToServer(dpy, iov, iovcnt) writev((dpy), (iov), (iovcnt))
125: /*
126: * ReadvFromServer and WritevToSever use struct iovec, normally found
127: * in Berkeley systems in <sys/uio.h>. See the readv(2) and writev(2)
128: * manual pages for details.
129: *
130: * struct iovec {
131: * caddr_t iov_base;
132: * int iov_len;
133: * };
134: */
135:
136: extern char *index();
137: #define SearchString(string, char) index((string), (char))
138:
139: #define KeymapDefault "/.X11keymap"
140: #define ErrorDataBase "/usr/lib/X11/XErrorDB"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.