|
|
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.