summaryrefslogtreecommitdiffstats
path: root/generic/tclIOSock.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclIOSock.c')
-rw-r--r--generic/tclIOSock.c70
1 files changed, 38 insertions, 32 deletions
diff --git a/generic/tclIOSock.c b/generic/tclIOSock.c
index 82d10a8..97dec06 100644
--- a/generic/tclIOSock.c
+++ b/generic/tclIOSock.c
@@ -1,32 +1,28 @@
-/*
+/*
* tclIOSock.c --
*
* Common routines used by all socket based channel types.
*
* Copyright (c) 1995-1997 Sun Microsystems, Inc.
*
- * See the file "license.terms" for information on usage and redistribution
- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- *
- * RCS: @(#) $Id: tclIOSock.c,v 1.5 2000/03/31 08:52:04 hobbs Exp $
+ * See the file "license.terms" for information on usage and redistribution of
+ * this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#include "tclInt.h"
-#include "tclPort.h"
/*
*---------------------------------------------------------------------------
*
* TclSockGetPort --
*
- * Maps from a string, which could be a service name, to a port.
- * Used by socket creation code to get port numbers and resolve
- * registered service names to port numbers.
+ * Maps from a string, which could be a service name, to a port. Used by
+ * socket creation code to get port numbers and resolve registered
+ * service names to port numbers.
*
* Results:
- * A standard Tcl result. On success, the port number is returned
- * in portPtr. On failure, an error message is left in the interp's
- * result.
+ * A standard Tcl result. On success, the port number is returned in
+ * portPtr. On failure, an error message is left in the interp's result.
*
* Side effects:
* None.
@@ -35,21 +31,21 @@
*/
int
-TclSockGetPort(interp, string, proto, portPtr)
- Tcl_Interp *interp;
- char *string; /* Integer or service name */
- char *proto; /* "tcp" or "udp", typically */
- int *portPtr; /* Return port number */
+TclSockGetPort(
+ Tcl_Interp *interp,
+ const char *string, /* Integer or service name */
+ const char *proto, /* "tcp" or "udp", typically */
+ int *portPtr) /* Return port number */
{
struct servent *sp; /* Protocol info for named services */
Tcl_DString ds;
- char *native;
+ const char *native;
if (Tcl_GetInt(NULL, string, portPtr) != TCL_OK) {
/*
* Don't bother translating 'proto' to native.
*/
-
+
native = Tcl_UtfToExternalDString(NULL, string, -1, &ds);
sp = getservbyname(native, proto); /* INTL: Native. */
Tcl_DStringFree(&ds);
@@ -62,8 +58,8 @@ TclSockGetPort(interp, string, proto, portPtr)
return TCL_ERROR;
}
if (*portPtr > 0xFFFF) {
- Tcl_AppendResult(interp, "couldn't open socket: port number too high",
- (char *) NULL);
+ Tcl_AppendResult(interp, "couldn't open socket: port number too high",
+ NULL);
return TCL_ERROR;
}
return TCL_OK;
@@ -85,28 +81,38 @@ TclSockGetPort(interp, string, proto, portPtr)
*----------------------------------------------------------------------
*/
+#undef TclSockMinimumBuffers
+#if !defined(_WIN32) && !defined(__CYGWIN__)
+# define SOCKET int
+#endif
+
int
-TclSockMinimumBuffers(sock, size)
- int sock; /* Socket file descriptor */
- int size; /* Minimum buffer size */
+TclSockMinimumBuffers(
+ void *sock, /* Socket file descriptor */
+ int size) /* Minimum buffer size */
{
int current;
- /*
- * Should be socklen_t, but HP10.20 (g)cc chokes
- */
- size_t len;
+ socklen_t len;
len = sizeof(int);
- getsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *)&current, &len);
+ getsockopt((SOCKET)(size_t)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)(size_t)sock, SOL_SOCKET, SO_SNDBUF, (char *)&size, len);
}
len = sizeof(int);
- getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&current, &len);
+ getsockopt((SOCKET)(size_t)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)(size_t)sock, SOL_SOCKET, SO_RCVBUF, (char *)&size, len);
}
return TCL_OK;
}
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 4
+ * fill-column: 78
+ * End:
+ */