diff options
Diffstat (limited to 'Xtransint.h')
-rw-r--r-- | Xtransint.h | 172 |
1 files changed, 110 insertions, 62 deletions
diff --git a/Xtransint.h b/Xtransint.h index 29c8522..a9d7d91 100644 --- a/Xtransint.h +++ b/Xtransint.h @@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/xtrans/Xtransint.h,v 3.35 2002/11/26 01:12:30 dawes Exp $ */ /* Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA * @@ -50,6 +51,9 @@ from The Open Group. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifndef _XTRANSINT_H_ +#define _XTRANSINT_H_ + /* * XTRANSDEBUG will enable the PRMSG() macros used in the X Transport * Interface code. Each use of the PRMSG macro has a level associated with @@ -63,10 +67,18 @@ from The Open Group. * XTRANSDEBUG=4 printing of intermediate values * XTRANSDEBUG=5 really detailed stuff #define XTRANSDEBUG 2 + * + * Defining XTRANSDEBUGTIMESTAMP will cause printing timestamps with each + * message. */ -#ifndef _XTRANSINT_H_ -#define _XTRANSINT_H_ +#ifndef XTRANSDEBUG +# ifndef __UNIXOS2__ +# define XTRANSDEBUG 1 +# else +# define XTRANSDEBUG 1 +# endif +#endif #ifdef WIN32 #define _WILLWINSOCK_ @@ -79,12 +91,30 @@ from The Open Group. #endif /* XTRANSDEBUG */ #include <errno.h> -#ifdef X_NOT_STDC_ENV -extern int errno; /* Internal system error number. */ -#endif #ifndef WIN32 +#ifndef Lynx #include <sys/socket.h> +#else +#include <socket.h> +#endif +#include <netinet/in.h> +#include <arpa/inet.h> +#ifdef __UNIXOS2__ +#include <sys/ioctl.h> +#endif + +/* + * Moved the setting of NEED_UTSNAME to this header file from Xtrans.c, + * to avoid a race condition. JKJ (6/5/97) + */ + +#if (defined(_POSIX_SOURCE) && !defined(AIXV3) && !defined(__QNX__)) || defined(hpux) || defined(USG) || defined(SVR4) || defined(SCO) +#ifndef NEED_UTSNAME +#define NEED_UTSNAME +#endif +#include <sys/utsname.h> +#endif /* * makedepend screws up on #undef OPEN_MAX, so we define a new symbol @@ -102,6 +132,9 @@ extern int errno; /* Internal system error number. */ #endif #endif #ifndef OPEN_MAX +#ifdef __GNU__ +#define OPEN_MAX (sysconf(_SC_OPEN_MAX)) +#endif #ifdef SVR4 #define OPEN_MAX 256 #else @@ -113,23 +146,33 @@ extern int errno; /* Internal system error number. */ #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 - +#endif +#ifdef __GNU__ +#define TRANS_OPEN_MAX OPEN_MAX +#else /* !__GNU__ */ #if OPEN_MAX > 256 #define TRANS_OPEN_MAX 256 #else #define TRANS_OPEN_MAX OPEN_MAX #endif +#endif /*__GNU__*/ #endif /* TRANS_OPEN_MAX */ - +#ifdef __UNIXOS2__ +#define ESET(val) +#else #define ESET(val) errno = val +#endif #define EGET() errno #else /* WIN32 */ @@ -141,9 +184,7 @@ extern int errno; /* Internal system error number. */ #endif /* WIN32 */ -#ifndef NULL -#define NULL 0 -#endif +#include <stddef.h> #ifdef X11_t #define X_TCP_PORT 6000 @@ -176,12 +217,10 @@ typedef struct _Xtransport { #ifdef TRANS_CLIENT XtransConnInfo (*OpenCOTSClient)( -#if NeedNestedPrototypes struct _Xtransport *, /* transport */ char *, /* protocol */ char *, /* host */ char * /* port */ -#endif ); #endif /* TRANS_CLIENT */ @@ -189,12 +228,10 @@ typedef struct _Xtransport { #ifdef TRANS_SERVER XtransConnInfo (*OpenCOTSServer)( -#if NeedNestedPrototypes struct _Xtransport *, /* transport */ char *, /* protocol */ char *, /* host */ char * /* port */ -#endif ); #endif /* TRANS_SERVER */ @@ -202,12 +239,10 @@ typedef struct _Xtransport { #ifdef TRANS_CLIENT XtransConnInfo (*OpenCLTSClient)( -#if NeedNestedPrototypes struct _Xtransport *, /* transport */ char *, /* protocol */ char *, /* host */ char * /* port */ -#endif ); #endif /* TRANS_CLIENT */ @@ -215,12 +250,10 @@ typedef struct _Xtransport { #ifdef TRANS_SERVER XtransConnInfo (*OpenCLTSServer)( -#if NeedNestedPrototypes struct _Xtransport *, /* transport */ char *, /* protocol */ char *, /* host */ char * /* port */ -#endif ); #endif /* TRANS_SERVER */ @@ -229,52 +262,40 @@ typedef struct _Xtransport { #ifdef TRANS_REOPEN XtransConnInfo (*ReopenCOTSServer)( -#if NeedNestedPrototypes struct _Xtransport *, /* transport */ int, /* fd */ char * /* port */ -#endif ); XtransConnInfo (*ReopenCLTSServer)( -#if NeedNestedPrototypes struct _Xtransport *, /* transport */ int, /* fd */ char * /* port */ -#endif ); #endif /* TRANS_REOPEN */ int (*SetOption)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ int, /* option */ int /* arg */ -#endif ); #ifdef TRANS_SERVER int (*CreateListener)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ char * /* port */ -#endif ); int (*ResetListener)( -#if NeedNestedPrototypes XtransConnInfo /* connection */ -#endif ); XtransConnInfo (*Accept)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ int * /* status */ -#endif ); #endif /* TRANS_SERVER */ @@ -282,70 +303,52 @@ typedef struct _Xtransport { #ifdef TRANS_CLIENT int (*Connect)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ char *, /* host */ char * /* port */ -#endif ); #endif /* TRANS_CLIENT */ int (*BytesReadable)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ BytesReadable_t * /* pend */ -#endif ); int (*Read)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ char *, /* buf */ int /* size */ -#endif ); int (*Write)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ char *, /* buf */ int /* size */ -#endif ); int (*Readv)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ struct iovec *, /* buf */ int /* size */ -#endif ); int (*Writev)( -#if NeedNestedPrototypes XtransConnInfo, /* connection */ struct iovec *, /* buf */ int /* size */ -#endif ); int (*Disconnect)( -#if NeedNestedPrototypes XtransConnInfo /* connection */ -#endif ); int (*Close)( -#if NeedNestedPrototypes XtransConnInfo /* connection */ -#endif ); int (*CloseForCloning)( -#if NeedNestedPrototypes XtransConnInfo /* connection */ -#endif ); } Xtransport; @@ -363,70 +366,115 @@ typedef struct _Xtransport_table { #define TRANS_ALIAS (1<<0) /* record is an alias, don't create server */ #define TRANS_LOCAL (1<<1) /* local transport */ +#define TRANS_DISABLED (1<<2) /* Don't open this one */ +#define TRANS_NOLISTEN (1<<3) /* Don't listen on this one */ +#define TRANS_NOUNLINK (1<<4) /* Dont unlink transport endpoints */ +/* Flags to preserve when setting others */ +#define TRANS_KEEPFLAGS (TRANS_NOUNLINK) /* * readv() and writev() don't exist or don't work correctly on some * systems, so they may be emulated. */ -#if defined(CRAY) || (defined(SYSV) && defined(SYSV386)) || defined(WIN32) || defined(__sxg__) || defined(sco324) +#if defined(CRAY) || (defined(SYSV) && defined(i386) && !defined(SCO325)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) #define READV(ciptr, iov, iovcnt) TRANS(ReadV)(ciptr, iov, iovcnt) static int TRANS(ReadV)( -#if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ struct iovec *, /* iov */ int /* iovcnt */ -#endif ); #else #define READV(ciptr, iov, iovcnt) readv(ciptr->fd, iov, iovcnt) -#endif /* CRAY || (SYSV && SYSV386) || WIN32 || __sxg__ || sco324 */ +#endif /* CRAY || (SYSV && i386) || WIN32 || __sxg__ || */ -#if defined(CRAY) || defined(WIN32) || defined(__sxg__) || defined(sco324) +#if defined(CRAY) || (defined(SYSV) && defined(i386) && !defined(SCO325)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) #define WRITEV(ciptr, iov, iovcnt) TRANS(WriteV)(ciptr, iov, iovcnt) static int TRANS(WriteV)( -#if NeedFunctionPrototypes XtransConnInfo, /* ciptr */ struct iovec *, /* iov */ int /* iovcnt */ -#endif ); #else #define WRITEV(ciptr, iov, iovcnt) writev(ciptr->fd, iov, iovcnt) -#endif /* CRAY || WIN32 || __sxg__ || sco324 */ +#endif /* CRAY || WIN32 || __sxg__ */ static int is_numeric ( -#if NeedFunctionPrototypes char * /* str */ -#endif ); +#ifdef TRANS_SERVER +static int trans_mkdir ( + char *, /* path */ + int /* mode */ +); +#endif /* * Some XTRANSDEBUG stuff */ #if defined(XTRANSDEBUG) +/* add hack to the format string to avoid warnings about extra arguments + * to fprintf. + */ +#ifdef XTRANSDEBUGTIMESTAMP +#if defined(XSERV_t) && defined(TRANS_SERVER) +/* Use ErrorF() for the X server */ +#define PRMSG(lvl,x,a,b,c) if (lvl <= XTRANSDEBUG){ \ + int hack= 0, saveerrno=errno; \ + struct timeval tp;\ + gettimeofday(&tp,0); \ + ErrorF(__xtransname); \ + ErrorF(x+hack,a,b,c); \ + ErrorF("timestamp (ms): %d\n",tp.tv_sec*1000+tp.tv_usec/1000); \ + errno=saveerrno; \ + } else ((void)0) +#else +#define PRMSG(lvl,x,a,b,c) if (lvl <= XTRANSDEBUG){ \ + int hack= 0, saveerrno=errno; \ + struct timeval tp;\ + gettimeofday(&tp,0); \ + fprintf(stderr, __xtransname); fflush(stderr); \ + fprintf(stderr, x+hack,a,b,c); fflush(stderr); \ + fprintf(stderr, "timestamp (ms): %d\n",tp.tv_sec*1000+tp.tv_usec/1000); \ + fflush(stderr); \ + errno=saveerrno; \ + } else ((void)0) +#endif /* XSERV_t && TRANS_SERVER */ +#else /* XTRANSDEBUGTIMESTAMP */ +#if defined(XSERV_t) && defined(TRANS_SERVER) +/* Use ErrorF() for the X server */ +#define PRMSG(lvl,x,a,b,c) if (lvl <= XTRANSDEBUG){ \ + int hack= 0, saveerrno=errno; \ + ErrorF(__xtransname); \ + ErrorF(x+hack,a,b,c); \ + errno=saveerrno; \ + } else ((void)0) +#else #define PRMSG(lvl,x,a,b,c) if (lvl <= XTRANSDEBUG){ \ - int saveerrno=errno; \ - fprintf(stderr, x,a,b,c); fflush(stderr); \ + int hack= 0, saveerrno=errno; \ + fprintf(stderr, __xtransname); fflush(stderr); \ + fprintf(stderr, x+hack,a,b,c); fflush(stderr); \ errno=saveerrno; \ - } + } else ((void)0) +#endif /* XSERV_t && TRANS_SERVER */ +#endif /* XTRANSDEBUGTIMESTAMP */ #else -#define PRMSG(lvl,x,a,b,c) +#define PRMSG(lvl,x,a,b,c) ((void)0) #endif /* XTRANSDEBUG */ #endif /* _XTRANSINT_H_ */ |