summaryrefslogtreecommitdiff
path: root/Xtransint.h
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 16:48:50 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 16:48:50 +0000
commit3bd236a07c0ebaabb7337dd5d56bc57a028a9c0e (patch)
tree4b89b1daf6c5cde1f7f5c59939745d235583cfb3 /Xtransint.h
parent26781c4f009a4b448dca3ab4912cbf01182e3d92 (diff)
Diffstat (limited to 'Xtransint.h')
-rw-r--r--Xtransint.h172
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_ */