aboutsummaryrefslogtreecommitdiff
path: root/X11/xtrans
diff options
context:
space:
mode:
Diffstat (limited to 'X11/xtrans')
-rw-r--r--X11/xtrans/Xtrans.c11
-rw-r--r--X11/xtrans/Xtransint.h7
-rw-r--r--X11/xtrans/Xtranslcl.c6
-rw-r--r--X11/xtrans/Xtranssock.c61
4 files changed, 55 insertions, 30 deletions
diff --git a/X11/xtrans/Xtrans.c b/X11/xtrans/Xtrans.c
index d9e32d01f..0d6ebaa78 100644
--- a/X11/xtrans/Xtrans.c
+++ b/X11/xtrans/Xtrans.c
@@ -48,11 +48,15 @@ from The Open Group.
*/
#include <ctype.h>
+#include <unistd.h>
#ifdef HAVE_SYSTEMD_DAEMON
#include <string.h>
#include <systemd/sd-daemon.h>
#endif
+#ifdef _MSC_VER
+#include <X11\Xwinsock.h>
+#endif
/*
* The transport table contains a definition for every transport (protocol)
* family. All operations that can be made on the transport go through this
@@ -112,9 +116,10 @@ Xtransport_table Xtransports[] = {
{ &TRANS(SCOFuncs), TRANS_LOCAL_SCO_INDEX },
#endif /* __SCO__ || __UNIXWARE__ */
#endif /* LOCALCONN */
+ { NULL, 0}
};
-#define NUMTRANS (sizeof(Xtransports)/sizeof(Xtransport_table))
+#define NUMTRANS (sizeof(Xtransports)/sizeof(Xtransport_table)-1)
#ifdef WIN32
@@ -699,7 +704,7 @@ TRANS(SetOption) (XtransConnInfo ciptr, int option, int arg)
#if defined(WIN32)
{
#ifdef WIN32
- u_long arg;
+ unsigned long arg;
#else
int arg;
#endif
@@ -927,7 +932,6 @@ TRANS(Writev) (XtransConnInfo ciptr, struct iovec *buf, int size)
return ciptr->transptr->Writev (ciptr, buf, size);
}
-#if XTRANS_SEND_FDS
int
TRANS(SendFd) (XtransConnInfo ciptr, int fd, int do_close)
{
@@ -939,7 +943,6 @@ TRANS(RecvFd) (XtransConnInfo ciptr)
{
return ciptr->transptr->RecvFd(ciptr);
}
-#endif
int
TRANS(Disconnect) (XtransConnInfo ciptr)
diff --git a/X11/xtrans/Xtransint.h b/X11/xtrans/Xtransint.h
index 4c670b88a..6b2b9ec00 100644
--- a/X11/xtrans/Xtransint.h
+++ b/X11/xtrans/Xtransint.h
@@ -287,7 +287,6 @@ typedef struct _Xtransport {
int /* size */
);
-#if XTRANS_SEND_FDS
int (*SendFd)(
XtransConnInfo, /* connection */
int, /* fd */
@@ -297,7 +296,6 @@ typedef struct _Xtransport {
int (*RecvFd)(
XtransConnInfo /* connection */
);
-#endif
int (*Disconnect)(
XtransConnInfo /* connection */
@@ -413,6 +411,11 @@ static int trans_mkdir (
# if defined(XSERV_t) && defined(TRANS_SERVER)
# include "os.h"
# else
+
+#ifdef _MSC_VER
+#define inline __inline
+#endif
+
static inline void _X_ATTRIBUTE_PRINTF(1, 0)
VErrorF(const char *f, va_list args)
{
diff --git a/X11/xtrans/Xtranslcl.c b/X11/xtrans/Xtranslcl.c
index 4deb86c40..65f1957b9 100644
--- a/X11/xtrans/Xtranslcl.c
+++ b/X11/xtrans/Xtranslcl.c
@@ -72,17 +72,23 @@ from The Open Group.
#include <errno.h>
#include <ctype.h>
+#ifdef _MSC_VER
+#include <signal.h>
+#else
#include <sys/signal.h>
#include <sys/ioctl.h>
+#endif
#include <sys/stat.h>
#if defined(SVR4) || defined(__SVR4)
#include <sys/filio.h>
#endif
+#ifndef _MSC_VER
#ifdef sun
# include <stropts.h>
#else
# include <sys/stropts.h>
#endif
+#endif
#include <sys/wait.h>
#include <sys/types.h>
diff --git a/X11/xtrans/Xtranssock.c b/X11/xtrans/Xtranssock.c
index fdf1dd774..6d4207f1c 100644
--- a/X11/xtrans/Xtranssock.c
+++ b/X11/xtrans/Xtranssock.c
@@ -129,11 +129,15 @@ from the copyright holders.
#include <X11/Xw32defs.h>
#undef close
#define close closesocket
+#undef ECONNREFUSED
#define ECONNREFUSED WSAECONNREFUSED
+#undef EADDRINUSE
#define EADDRINUSE WSAEADDRINUSE
+#undef EPROTOTYPE
#define EPROTOTYPE WSAEPROTOTYPE
#undef EWOULDBLOCK
#define EWOULDBLOCK WSAEWOULDBLOCK
+#undef EINPROGRESS
#define EINPROGRESS WSAEINPROGRESS
#undef EINTR
#define EINTR WSAEINTR
@@ -242,13 +246,20 @@ static int TRANS(SocketINETClose) (XtransConnInfo ciptr);
#endif
#if defined HAVE_SOCKLEN_T || (defined(IPv6) && defined(AF_INET6))
+#ifdef _MSC_VER
+# define SOCKLEN_T int
+#else
# define SOCKLEN_T socklen_t
+#endif
#elif defined(SVR4) || defined(__SVR4) || defined(__SCO__)
# define SOCKLEN_T size_t
#else
# define SOCKLEN_T int
#endif
+static int TRANS(SocketRecvFdInvalid)(XtransConnInfo ciptr);
+static int TRANS(SocketSendFdInvalid)(XtransConnInfo ciptr, int fd, int do_close);
+
/*
* These are some utility function used by the real interface function below.
*/
@@ -640,7 +651,7 @@ TRANS(SocketOpenCOTSServer) (Xtransport *thistrans, char *protocol,
if (Sockettrans2devtab[i].family == AF_INET6)
{
int one = 1;
- setsockopt(ciptr->fd, IPPROTO_IPV6, IPV6_V6ONLY, &one, sizeof(int));
+ setsockopt(ciptr->fd, IPPROTO_IPV6, IPV6_V6ONLY, (const char *)&one, sizeof(int));
}
#endif
/* Save the index for later use */
@@ -725,7 +736,7 @@ TRANS(SocketOpenCLTSServer) (Xtransport *thistrans, char *protocol,
if (Sockettrans2devtab[i].family == AF_INET6)
{
int one = 1;
- setsockopt(ciptr->fd, IPPROTO_IPV6, IPV6_V6ONLY, &one, sizeof(int));
+ setsockopt(ciptr->fd, IPPROTO_IPV6, IPV6_V6ONLY, (const char *)&one, sizeof(int));
}
#endif
/* Save the index for later use */
@@ -850,6 +861,10 @@ set_sun_path(const char *port, const char *upath, char *path, int abstract)
#ifdef TRANS_SERVER
+#ifndef SO_BINDRETRYCOUNT
+#define SO_BINDRETRYCOUNT 20
+#endif
+
static int
TRANS(SocketCreateListener) (XtransConnInfo ciptr,
struct sockaddr *sockname,
@@ -867,7 +882,7 @@ TRANS(SocketCreateListener) (XtransConnInfo ciptr,
|| Sockettrans2devtab[ciptr->index].family == AF_INET6
#endif
)
- retry = 20;
+ retry = SO_BINDRETRYCOUNT;
else
retry = 0;
@@ -1247,7 +1262,11 @@ TRANS(SocketINETAccept) (XtransConnInfo ciptr, int *status)
{
XtransConnInfo newciptr;
+#if defined(IPv6) && defined(AF_INET6)
+ struct sockaddr_storage sockname;
+#else
struct sockaddr_in sockname;
+#endif
SOCKLEN_T namelen = sizeof(sockname);
prmsg (2, "SocketINETAccept(%p,%d)\n", ciptr, ciptr->fd);
@@ -2181,6 +2200,15 @@ TRANS(SocketSendFd) (XtransConnInfo ciptr, int fd, int do_close)
return 0;
}
+#define MAX_FDS 128
+
+union fd_pass {
+ struct cmsghdr cmsghdr;
+ char buf[CMSG_SPACE(MAX_FDS * sizeof(int))];
+};
+
+#endif /* XTRANS_SEND_FDS */
+
static int
TRANS(SocketRecvFdInvalid)(XtransConnInfo ciptr)
{
@@ -2195,15 +2223,6 @@ TRANS(SocketSendFdInvalid)(XtransConnInfo ciptr, int fd, int do_close)
return -1;
}
-#define MAX_FDS 128
-
-union fd_pass {
- struct cmsghdr cmsghdr;
- char buf[CMSG_SPACE(MAX_FDS * sizeof(int))];
-};
-
-#endif /* XTRANS_SEND_FDS */
-
static int
TRANS(SocketRead) (XtransConnInfo ciptr, char *buf, int size)
@@ -2514,10 +2533,8 @@ Xtransport TRANS(SocketTCPFuncs) = {
TRANS(SocketWrite),
TRANS(SocketReadv),
TRANS(SocketWritev),
-#if XTRANS_SEND_FDS
- TRANS(SocketSendFdInvalid),
- TRANS(SocketRecvFdInvalid),
-#endif
+ TRANS(SocketSendFdInvalid),
+ TRANS(SocketRecvFdInvalid),
TRANS(SocketDisconnect),
TRANS(SocketINETClose),
TRANS(SocketINETClose),
@@ -2558,10 +2575,8 @@ Xtransport TRANS(SocketINETFuncs) = {
TRANS(SocketWrite),
TRANS(SocketReadv),
TRANS(SocketWritev),
-#if XTRANS_SEND_FDS
- TRANS(SocketSendFdInvalid),
- TRANS(SocketRecvFdInvalid),
-#endif
+ TRANS(SocketSendFdInvalid),
+ TRANS(SocketRecvFdInvalid),
TRANS(SocketDisconnect),
TRANS(SocketINETClose),
TRANS(SocketINETClose),
@@ -2603,10 +2618,8 @@ Xtransport TRANS(SocketINET6Funcs) = {
TRANS(SocketWrite),
TRANS(SocketReadv),
TRANS(SocketWritev),
-#if XTRANS_SEND_FDS
- TRANS(SocketSendFdInvalid),
- TRANS(SocketRecvFdInvalid),
-#endif
+ TRANS(SocketSendFdInvalid),
+ TRANS(SocketRecvFdInvalid),
TRANS(SocketDisconnect),
TRANS(SocketINETClose),
TRANS(SocketINETClose),