diff options
Diffstat (limited to 'nx-X11/lib/dps/Xlibnet.h')
-rw-r--r-- | nx-X11/lib/dps/Xlibnet.h | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/nx-X11/lib/dps/Xlibnet.h b/nx-X11/lib/dps/Xlibnet.h new file mode 100644 index 000000000..f86c3542b --- /dev/null +++ b/nx-X11/lib/dps/Xlibnet.h @@ -0,0 +1,284 @@ +/* $XConsortium: Xlibnet.h,v 1.18 91/07/23 19:01:27 rws Exp $ */ + +/* +Copyright 1991 Massachusetts Institute of Technology + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of M.I.T. not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. M.I.T. makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. +*/ +/* $XFree86: xc/lib/dps/Xlibnet.h,v 1.6 2001/06/30 22:41:44 tsi Exp $ */ +/* + * Xlibnet.h - Xlib networking include files for UNIX Systems. + */ + +#ifndef X_UNIX_PATH +#ifdef hpux +#define X_UNIX_PATH "/usr/spool/sockets/X11/" +#define OLD_UNIX_PATH "/tmp/.X11-unix/X" +#else +#define X_UNIX_PATH "/tmp/.X11-unix/X" +#endif +#endif /* X_UNIX_PATH */ + +#ifdef STREAMSCONN +#ifdef SYSV +/* + * UNIX System V Release 3.2 + */ +#define BytesReadable(fd,ptr) (_XBytesReadable ((fd), (ptr))) +#define MALLOC_0_RETURNS_NULL +#include <sys/ioctl.h> + +#endif /* SYSV */ +#ifdef SVR4 +/* + * TLI (Streams-based) networking + */ +#define BytesReadable(fd,ptr) (_XBytesReadable ((fd), (ptr))) +#include <sys/uio.h> /* define struct iovec */ + +#endif /* SVR4 */ +#else /* not STREAMSCONN */ +/* + * socket-based systems + */ +#include <netinet/in.h> +#include <sys/ioctl.h> +#include <netdb.h> +#include <sys/uio.h> /* needed for XlibInt.c */ +#ifdef SVR4 +#include <sys/filio.h> +#endif + +#if defined(i386) && defined(SYSV) +#if !defined(__SCO__) +#include <net/errno.h> +#endif +#include <sys/stropts.h> +#define BytesReadable(fd,ptr) ioctl((fd), I_NREAD, (ptr)) +#else +#define BytesReadable(fd, ptr) ioctl ((fd), FIONREAD, (ptr)) +#endif + +#endif /* STREAMSCONN else */ + +/* + * If your BytesReadable correctly detects broken connections, then + * you should NOT define XCONN_CHECK_FREQ. + */ +#define XCONN_CHECK_FREQ 256 + +#ifndef X_NOT_POSIX +#ifdef _POSIX_SOURCE +#include <limits.h> +#else +#define _POSIX_SOURCE +#include <limits.h> +#undef _POSIX_SOURCE +#endif +#endif +#ifndef OPEN_MAX +#ifdef SVR4 +#define OPEN_MAX 256 +#else +#include <sys/param.h> +#ifndef OPEN_MAX +#ifdef NOFILE +#define OPEN_MAX NOFILE +#else +#if !defined(__UNIXOS2__) && !defined(__QNX__) +#define OPEN_MAX NOFILES_MAX +#else +#define OPEN_MAX 256 +#endif +#endif +#endif +#endif +#endif + +#if OPEN_MAX > 256 +#undef OPEN_MAX +#define OPEN_MAX 256 +#endif + +/* Adobe additions */ +#ifdef MSKCNT +#undef MSKCNT +#endif +#ifdef BITMASK +#undef BITMASK +#endif +#ifdef MASKIDX +#undef MASKIDX +#endif + +#define MSKCNT ((OPEN_MAX + 31) / 32) + +#if (MSKCNT==1) +#define BITMASK(i) (1 << (i)) +#define MASKIDX(i) 0 +#endif +#if (MSKCNT>1) +#define BITMASK(i) (1 << ((i) & 31)) +#define MASKIDX(i) ((i) >> 5) +#endif + +#define MASKWORD(buf, i) buf[MASKIDX(i)] +#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i) +#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i) +#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i)) + +/* Adobe additions */ +#ifdef COPYBITS +#undef COPYBITS +#undef CLEARBITS +#undef MASKANDSETBITS +#undef ORBITS +#undef UNSETBITS +#endif + +#if (MSKCNT==1) +#define COPYBITS(src, dst) dst[0] = src[0] +#define CLEARBITS(buf) buf[0] = 0 +#define MASKANDSETBITS(dst, b1, b2) dst[0] = (b1[0] & b2[0]) +#define ORBITS(dst, b1, b2) dst[0] = (b1[0] | b2[0]) +#define UNSETBITS(dst, b1) (dst[0] &= ~b1[0]) +#define _XANYSET(src) (src[0]) +#endif +#if (MSKCNT==2) +#define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; } +#define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; } +#define MASKANDSETBITS(dst, b1, b2) {\ + dst[0] = (b1[0] & b2[0]);\ + dst[1] = (b1[1] & b2[1]); } +#define ORBITS(dst, b1, b2) {\ + dst[0] = (b1[0] | b2[0]);\ + dst[1] = (b1[1] | b2[1]); } +#define UNSETBITS(dst, b1) {\ + dst[0] &= ~b1[0]; \ + dst[1] &= ~b1[1]; } +#define _XANYSET(src) (src[0] || src[1]) +#endif +#if (MSKCNT==3) +#define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; \ + dst[2] = src[2]; } +#define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; buf[2] = 0; } +#define MASKANDSETBITS(dst, b1, b2) {\ + dst[0] = (b1[0] & b2[0]);\ + dst[1] = (b1[1] & b2[1]);\ + dst[2] = (b1[2] & b2[2]); } +#define ORBITS(dst, b1, b2) {\ + dst[0] = (b1[0] | b2[0]);\ + dst[1] = (b1[1] | b2[1]);\ + dst[2] = (b1[2] | b2[2]); } +#define UNSETBITS(dst, b1) {\ + dst[0] &= ~b1[0]; \ + dst[1] &= ~b1[1]; \ + dst[2] &= ~b1[2]; } +#define _XANYSET(src) (src[0] || src[1] || src[2]) +#endif +#if (MSKCNT==4) +#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1]; \ + dst[2] = src[2]; dst[3] = src[3] +#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0; buf[2] = 0; buf[3] = 0 +#define MASKANDSETBITS(dst, b1, b2) \ + dst[0] = (b1[0] & b2[0]);\ + dst[1] = (b1[1] & b2[1]);\ + dst[2] = (b1[2] & b2[2]);\ + dst[3] = (b1[3] & b2[3]) +#define ORBITS(dst, b1, b2) \ + dst[0] = (b1[0] | b2[0]);\ + dst[1] = (b1[1] | b2[1]);\ + dst[2] = (b1[2] | b2[2]);\ + dst[3] = (b1[3] | b2[3]) +#define UNSETBITS(dst, b1) \ + dst[0] &= ~b1[0]; \ + dst[1] &= ~b1[1]; \ + dst[2] &= ~b1[2]; \ + dst[3] &= ~b1[3] +#define _XANYSET(src) (src[0] || src[1] || src[2] || src[3]) +#endif + +#if (MSKCNT>4) +#define COPYBITS(src, dst) bcopy((char *) src, (char *) dst,\ + MSKCNT*sizeof(long)) +#define CLEARBITS(buf) bzero((char *) buf, MSKCNT*sizeof(long)) +#define MASKANDSETBITS(dst, b1, b2) \ + { int cri; \ + for (cri=MSKCNT; --cri>=0; ) \ + dst[cri] = (b1[cri] & b2[cri]); } +#define ORBITS(dst, b1, b2) \ + { int cri; \ + for (cri=MSKCNT; --cri>=0; ) \ + dst[cri] = (b1[cri] | b2[cri]); } +#define UNSETBITS(dst, b1) \ + { int cri; \ + for (cri=MSKCNT; --cri>=0; ) \ + dst[cri] &= ~b1[cri]; } +/* + * If MSKCNT>4, then _XANYSET is a routine defined in XlibInt.c. + * + * #define _XANYSET(src) (src[0] || src[1] || src[2] || src[3] || src[4] ...) + */ +extern int N_XANYSET(unsigned long *); +#endif + +/* + * ReadvFromServer and WritevToSever use struct iovec, normally found + * in Berkeley systems in <sys/uio.h>. See the readv(2) and writev(2) + * manual pages for details. + * + * struct iovec { + * caddr_t iov_base; + * int iov_len; + * }; + */ +#if defined(USG) && !defined(CRAY) && !defined(umips) && !defined(MOTOROLA) +struct iovec { + caddr_t iov_base; + int iov_len; +}; +#endif /* USG */ + + +#ifdef STREAMSCONN +#include "Xstreams.h" + +extern char _XsTypeOfStream[]; +extern Xstream _XsStream[]; + +#define ReadFromServer(dpy, data, size) \ + (*_XsStream[_XsTypeOfStream[dpy]].ReadFromStream)((dpy), (data), (size), \ + BUFFERING) +#define WriteToServer(dpy, bufind, size) \ + (*_XsStream[_XsTypeOfStream[dpy]].WriteToStream)((dpy), (bufind), (size)) + +#else /* else not STREAMSCONN */ + +/* + * bsd can read from sockets directly + */ +#define ReadFromServer(dpy, data, size) read((dpy), (data), (size)) +#define WriteToServer(dpy, bufind, size) write((dpy), (bufind), (size)) + +#endif /* STREAMSCONN */ + + +#ifndef USL_COMPAT +#if !defined(USG) || defined(MOTOROLA) || \ + defined(__SCO__) || (!(defined(SYSV) && defined(i386))) || \ + defined(__UNIXWARE__) +#define _XReadV readv +#define _XWriteV writev +#endif +#endif /* !USL_COMPAT */ + +#define ReadvFromServer(dpy, iov, iovcnt) _XReadV((dpy), (iov), (iovcnt)) +#define WritevToServer(dpy, iov, iovcnt) _XWriteV((dpy), (iov), (iovcnt)) |