|
|
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 MSKCNT ((NOFILE + 31) / 32) /* size of bit array */
14:
15: #if (MSKCNT==1)
16: #define BITMASK(i) (1 << (i))
17: #define MASKIDX(i) 0
18: #endif
19: #if (MSKCNT>1)
20: #define BITMASK(i) (1 << ((i) & 31))
21: #define MASKIDX(i) ((i) >> 5)
22: #endif
23:
24: #define MASKWORD(buf, i) buf[MASKIDX(i)]
25: #define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i)
26: #define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i)
27: #define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i))
28:
29: #if (MSKCNT==1)
30: #define COPYBITS(src, dst) dst[0] = src[0]
31: #define CLEARBITS(buf) buf[0] = 0
32: #define MASKANDSETBITS(dst, b1, b2) dst[0] = (b1[0] & b2[0])
33: #define ORBITS(dst, b1, b2) dst[0] = (b1[0] | b2[0])
34: #define UNSETBITS(dst, b1) (dst[0] &= ~b1[0])
35: #define ANYSET(src) (src[0])
36: #endif
37: #if (MSKCNT==2)
38: #define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; }
39: #define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; }
40: #define MASKANDSETBITS(dst, b1, b2) {\
41: dst[0] = (b1[0] & b2[0]);\
42: dst[1] = (b1[1] & b2[1]); }
43: #define ORBITS(dst, b1, b2) {\
44: dst[0] = (b1[0] | b2[0]);\
45: dst[1] = (b1[1] | b2[1]); }
46: #define UNSETBITS(dst, b1) {\
47: dst[0] &= ~b1[0]; \
48: dst[1] &= ~b1[1]; }
49: #define ANYSET(src) (src[0] || src[1])
50: #endif
51: #if (MSKCNT==3)
52: #define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; }
53: #define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; buf[2] = 0; }
54: #define MASKANDSETBITS(dst, b1, b2) {\
55: dst[0] = (b1[0] & b2[0]);\
56: dst[1] = (b1[1] & b2[1]);\
57: dst[2] = (b1[2] & b2[2]); }
58: #define ORBITS(dst, b1, b2) {\
59: dst[0] = (b1[0] | b2[0]);\
60: dst[1] = (b1[1] | b2[1]);\
61: dst[2] = (b1[2] | b2[2]); }
62: #define UNSETBITS(dst, b1) {\
63: dst[0] &= ~b1[0]; \
64: dst[1] &= ~b1[1]; \
65: dst[2] &= ~b1[2]; }
66: #define ANYSET(src) (src[0] || src[1] || src[2])
67: #endif
68: #if (MSKCNT>3)
69: #define COPYBITS(src, dst) bcopy((caddr_t) src, (caddr_t) dst,\
70: MSKCNT*sizeof(long))
71: #define CLEARBITS(buf) bzero((caddr_t) buf, MSKCNT*sizeof(long))
72: #define MASKANDSETBITS(dst, b1, b2) { int cri;\
73: for (cri=0; i<MSKCNT; cri++) \
74: dst[cri] = (b1[cri] & b2[cri]); }
75: #define ORBITS(dst, b1, b2) { int cri;\
76: for (cri=0; i<MSKCNT; cri++) \
77: dst[cri] = (b1[cri] | b2[cri]); }
78: #define UNSETBITS(dst, b1) { int cri;\
79: for (cri=0; i<MSKCNT; cri++) \
80: dst[cri] &= ~b1[cri]; }
81: #define ANYSET(src) (src[0] || src[1] || src[2])
82: #endif
83:
84: char *malloc(), *realloc(), *calloc(), *alloca();
85:
86: char *strncpy(), *strncat();
87:
88: void exit();
89: void bcopy();
90: void perror();
91: void free();
92:
93: #define LockDisplay(dis)
94: #define LockMutex(mutex)
95: #define UnlockMutex(mutex)
96: #define UnlockDisplay(dis)
97: #define Xfree(ptr) free((ptr))
98: #define Xalloca(size) alloca((size))
99:
100: #if (defined ibm032)&&(defined __HIGHC__)
101: pragma on(alloca);
102: #endif
103:
104: /*
105: * Note that some machines do not return a valid pointer for malloc(0), in
106: * which case we provide an alternate under the control of the
107: * define MALLOC_0_RETURNS_NULL. This is necessary because some
108: * Xlib code expects malloc(0) to return a valid pointer to storage.
109: */
110: #ifdef MALLOC_0_RETURNS_NULL
111:
112: # define Xmalloc(size) malloc(((size) > 0 ? (size) : 1))
113: # define Xrealloc(ptr, size) realloc((ptr), ((size) > 0 ? (size) : 1))
114: # define Xcalloc(nelem, elsize) calloc(((nelem) > 0 ? (nelem) : 1), (elsize))
115:
116: #else
117:
118: # define Xmalloc(size) malloc((size))
119: # define Xrealloc(ptr, size) realloc((ptr), (size))
120: # define Xcalloc(nelem, elsize) calloc((nelem), (elsize))
121:
122: #endif
123:
124: #ifdef ISOCONN
125: /*
126: * Should pick up next from server header file...
127: */
128: #define MAXSOCKS 64
129:
130: #define UNIX_IO 0
131: #define ISODE_IO 1
132:
133: #define BytesReadable(fd, ptr) \
134: ioctlfn[fd2family[fd]](fd, ptr)
135:
136: #define ReadFromServer(fd, data, size) \
137: readfn[fd2family[fd]]((fd), (data), (size))
138:
139: #define WriteToServer(fd, bufind, size) \
140: writefn[fd2family[fd]]((fd), (bufind), (size))
141:
142: #define ReadvFromServer(fd, iov, iovcnt) \
143: readvfn[fd2family[fd]]((fd), (iov), (iovcnt))
144:
145: #define WritevToServer(fd, iov, iovcnt) \
146: writevfn[fd2family[fd]]((fd), (iov), (iovcnt))
147:
148: #define CloseToServer(fd) \
149: closefn[fd2family[fd]](fd)
150:
151: extern int isodexbug;
152:
153: #else /* ISOCONN */
154: #define BytesReadable(fd, ptr) ioctl ((fd), FIONREAD, (ptr))
155: #if !defined (mips) || !defined (SYSTYPE_SYSV)
156: #define ReadFromServer(dpy, data, size) read((dpy), (data), (size))
157: #define WriteToServer(dpy, bufind, size) write((dpy), (bufind), (size))
158: #endif /* !mips || !SYSTYPE_SYSV */
159: #define ReadvFromServer(dpy, iov, iovcnt) readv((dpy), (iov), (iovcnt))
160: #define WritevToServer(dpy, iov, iovcnt) writev((dpy), (iov), (iovcnt))
161: #endif /* ISOCONN */
162: /*
163: * ReadvFromServer and WritevToSever use struct iovec, normally found
164: * in Berkeley systems in <sys/uio.h>. See the readv(2) and writev(2)
165: * manual pages for details.
166: *
167: * struct iovec {
168: * caddr_t iov_base;
169: * int iov_len;
170: * };
171: */
172:
173: extern char *index();
174: #define SearchString(string, char) index((string), (char))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.