summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tclIOSock.c15
-rw-r--r--generic/tclInt.decls5
-rw-r--r--generic/tclIntDecls.h58
-rw-r--r--generic/tclStubInit.c24
4 files changed, 82 insertions, 20 deletions
diff --git a/generic/tclIOSock.c b/generic/tclIOSock.c
index f311912..159f3da 100644
--- a/generic/tclIOSock.c
+++ b/generic/tclIOSock.c
@@ -83,25 +83,30 @@ TclSockGetPort(interp, string, proto, portPtr)
*----------------------------------------------------------------------
*/
+#undef TclSockMinimumBuffers
+#ifndef _WIN32
+# define SOCKET int
+#endif
+
int
TclSockMinimumBuffers(sock, size)
- int sock; /* Socket file descriptor */
+ void *sock; /* Socket file descriptor */
int size; /* Minimum buffer size */
{
int current;
socklen_t len;
len = sizeof(int);
- getsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *)&current, &len);
+ getsockopt((SOCKET)sock, SOL_SOCKET, SO_SNDBUF, (char *)&current, &len);
if (current < size) {
len = sizeof(int);
- setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *)&size, len);
+ setsockopt((SOCKET)sock, SOL_SOCKET, SO_SNDBUF, (char *)&size, len);
}
len = sizeof(int);
- getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&current, &len);
+ getsockopt((SOCKET)sock, SOL_SOCKET, SO_RCVBUF, (char *)&current, &len);
if (current < size) {
len = sizeof(int);
- setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&size, len);
+ setsockopt((SOCKET)sock, SOL_SOCKET, SO_RCVBUF, (char *)&size, len);
}
return TCL_OK;
}
diff --git a/generic/tclInt.decls b/generic/tclInt.decls
index 43947df..d380270 100644
--- a/generic/tclInt.decls
+++ b/generic/tclInt.decls
@@ -408,7 +408,10 @@ declare 103 {
int *portPtr)
}
declare 104 {unix win} {
- int TclSockMinimumBuffers(int sock, int size)
+ int TclSockMinimumBuffersOld(int sock, int size)
+}
+declare 110 {unix win} {
+ int TclSockMinimumBuffers(void *sock, int size)
}
# Replaced by Tcl_FSStat in 8.4:
#declare 105 {
diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h
index bf0c2b7..94860aa 100644
--- a/generic/tclIntDecls.h
+++ b/generic/tclIntDecls.h
@@ -291,12 +291,12 @@ EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp *interp,
char *str, char *proto, int *portPtr));
#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
/* 104 */
-EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock,
+EXTERN int TclSockMinimumBuffersOld _ANSI_ARGS_((int sock,
int size));
#endif /* UNIX */
#ifdef __WIN32__
/* 104 */
-EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((int sock,
+EXTERN int TclSockMinimumBuffersOld _ANSI_ARGS_((int sock,
int size));
#endif /* __WIN32__ */
/* Slot 105 is reserved */
@@ -308,7 +308,16 @@ EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ *proc));
EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace *nsPtr));
/* 109 */
EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp *iPtr));
-/* Slot 110 is reserved */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+/* 110 */
+EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((VOID *sock,
+ int size));
+#endif /* UNIX */
+#ifdef __WIN32__
+/* 110 */
+EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((VOID *sock,
+ int size));
+#endif /* __WIN32__ */
/* 111 */
EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_((
Tcl_Interp *interp, CONST char *name,
@@ -653,10 +662,10 @@ typedef struct TclIntStubs {
void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp *interp)); /* 102 */
int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp *interp, char *str, char *proto, int *portPtr)); /* 103 */
#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
- int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */
+ int (*tclSockMinimumBuffersOld) _ANSI_ARGS_((int sock, int size)); /* 104 */
#endif /* UNIX */
#ifdef __WIN32__
- int (*tclSockMinimumBuffers) _ANSI_ARGS_((int sock, int size)); /* 104 */
+ int (*tclSockMinimumBuffersOld) _ANSI_ARGS_((int sock, int size)); /* 104 */
#endif /* __WIN32__ */
#ifdef MAC_TCL
VOID *reserved104;
@@ -666,7 +675,15 @@ typedef struct TclIntStubs {
int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ *proc)); /* 107 */
void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace *nsPtr)); /* 108 */
int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp *iPtr)); /* 109 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ int (*tclSockMinimumBuffers) _ANSI_ARGS_((VOID *sock, int size)); /* 110 */
+#endif /* UNIX */
+#ifdef __WIN32__
+ int (*tclSockMinimumBuffers) _ANSI_ARGS_((VOID *sock, int size)); /* 110 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
VOID *reserved110;
+#endif /* MAC_TCL */
void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, Tcl_ResolveCmdProc *cmdProc, Tcl_ResolveVarProc *varProc, Tcl_ResolveCompiledVarProc *compiledVarProc)); /* 111 */
int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Namespace *nsPtr, Tcl_Obj *objPtr)); /* 112 */
Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, ClientData clientData, Tcl_NamespaceDeleteProc *deleteProc)); /* 113 */
@@ -1103,15 +1120,15 @@ extern TclIntStubs *tclIntStubsPtr;
(tclIntStubsPtr->tclSockGetPort) /* 103 */
#endif
#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
-#ifndef TclSockMinimumBuffers
-#define TclSockMinimumBuffers \
- (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */
+#ifndef TclSockMinimumBuffersOld
+#define TclSockMinimumBuffersOld \
+ (tclIntStubsPtr->tclSockMinimumBuffersOld) /* 104 */
#endif
#endif /* UNIX */
#ifdef __WIN32__
-#ifndef TclSockMinimumBuffers
-#define TclSockMinimumBuffers \
- (tclIntStubsPtr->tclSockMinimumBuffers) /* 104 */
+#ifndef TclSockMinimumBuffersOld
+#define TclSockMinimumBuffersOld \
+ (tclIntStubsPtr->tclSockMinimumBuffersOld) /* 104 */
#endif
#endif /* __WIN32__ */
/* Slot 105 is reserved */
@@ -1131,7 +1148,18 @@ extern TclIntStubs *tclIntStubsPtr;
#define TclUpdateReturnInfo \
(tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */
#endif
-/* Slot 110 is reserved */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+#ifndef TclSockMinimumBuffers
+#define TclSockMinimumBuffers \
+ (tclIntStubsPtr->tclSockMinimumBuffers) /* 110 */
+#endif
+#endif /* UNIX */
+#ifdef __WIN32__
+#ifndef TclSockMinimumBuffers
+#define TclSockMinimumBuffers \
+ (tclIntStubsPtr->tclSockMinimumBuffers) /* 110 */
+#endif
+#endif /* __WIN32__ */
#ifndef Tcl_AddInterpResolvers
#define Tcl_AddInterpResolvers \
(tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */
@@ -1406,4 +1434,10 @@ extern TclIntStubs *tclIntStubsPtr;
/* !END!: Do not edit above this line. */
+#if !defined(_WIN64)
+/* See bug 510001: TclSockMinimumBuffers needs plat imp */
+# undef TclSockMinimumBuffers
+# define TclSockMinimumBuffers(a,b) TclSockMinimumBuffersOld((int)(a),b)
+#endif
+
#endif /* _TCLINTDECLS */
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 71470b3..cbb89a2 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -55,6 +55,18 @@ Tcl_NotifierProcs tclOriginalNotifier = {
NULL
};
+/* See bug 510001: TclSockMinimumBuffers needs plat imp */
+#ifdef _WIN64
+# define TclSockMinimumBuffersOld 0
+#else
+int TclSockMinimumBuffersOld(sock, size)
+ int sock;
+ int size;
+{
+ return TclSockMinimumBuffers((void *) (size_t) sock, size);
+}
+#endif
+
#ifdef __CYGWIN__
/* Trick, so we don't have to include <windows.h> here, which
@@ -317,10 +329,10 @@ TclIntStubs tclIntStubs = {
TclSetupEnv, /* 102 */
TclSockGetPort, /* 103 */
#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
- TclSockMinimumBuffers, /* 104 */
+ TclSockMinimumBuffersOld, /* 104 */
#endif /* UNIX */
#ifdef __WIN32__
- TclSockMinimumBuffers, /* 104 */
+ TclSockMinimumBuffersOld, /* 104 */
#endif /* __WIN32__ */
#ifdef MAC_TCL
NULL, /* 104 */
@@ -330,7 +342,15 @@ TclIntStubs tclIntStubs = {
TclStatInsertProc, /* 107 */
TclTeardownNamespace, /* 108 */
TclUpdateReturnInfo, /* 109 */
+#if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */
+ TclSockMinimumBuffers, /* 110 */
+#endif /* UNIX */
+#ifdef __WIN32__
+ TclSockMinimumBuffers, /* 110 */
+#endif /* __WIN32__ */
+#ifdef MAC_TCL
NULL, /* 110 */
+#endif /* MAC_TCL */
Tcl_AddInterpResolvers, /* 111 */
Tcl_AppendExportList, /* 112 */
Tcl_CreateNamespace, /* 113 */