]> granicus.if.org Git - php/commitdiff
Tidy up stupid signed/unsigned issues with win32 by introducing a php_socket_t typedef.
authorWez Furlong <wez@php.net>
Fri, 28 Feb 2003 21:03:36 +0000 (21:03 +0000)
committerWez Furlong <wez@php.net>
Fri, 28 Feb 2003 21:03:36 +0000 (21:03 +0000)
ext/ftp/ftp.c
ext/ftp/ftp.h
ext/standard/streamsfuncs.c
main/network.c
main/php_network.h
main/streams/xp_socket.c
win32/select.c

index 4601a6e321db9ec26d65ffe58be0177018c8200f..6a472abe8376d698c93450243721f16c365a68f1 100644 (file)
@@ -86,9 +86,9 @@ static int            ftp_putcmd(     ftpbuf_t *ftp,
                                        const char *args);
 
 /* wrapper around send/recv to handle timeouts */
-static int             my_send(ftpbuf_t *ftp, int s, void *buf, size_t len);
-static int             my_recv(ftpbuf_t *ftp, int s, void *buf, size_t len);
-static int             my_accept(ftpbuf_t *ftp, int s, struct sockaddr *addr,
+static int             my_send(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len);
+static int             my_recv(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len);
+static int             my_accept(ftpbuf_t *ftp, php_socket_t s, struct sockaddr *addr,
                                int *addrlen);
 
 /* reads a line the socket , returns true on success, false on error */
@@ -1173,7 +1173,7 @@ ftp_getresp(ftpbuf_t *ftp)
 /* {{{ my_send
  */
 int
-my_send(ftpbuf_t *ftp, int s, void *buf, size_t len)
+my_send(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len)
 {
        fd_set          write_set;
        struct timeval  tv;
@@ -1225,7 +1225,7 @@ my_send(ftpbuf_t *ftp, int s, void *buf, size_t len)
 /* {{{ my_recv
  */
 int
-my_recv(ftpbuf_t *ftp, int s, void *buf, size_t len)
+my_recv(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len)
 {
        fd_set          read_set;
        struct timeval  tv;
@@ -1265,7 +1265,7 @@ my_recv(ftpbuf_t *ftp, int s, void *buf, size_t len)
 /* {{{ data_available
  */
 int
-data_available(ftpbuf_t *ftp, int s)
+data_available(ftpbuf_t *ftp, php_socket_t s)
 {
        fd_set          read_set;
        struct timeval  tv;
@@ -1292,7 +1292,7 @@ data_available(ftpbuf_t *ftp, int s)
 /* {{{ data_writeable
  */
 int
-data_writeable(ftpbuf_t *ftp, int s)
+data_writeable(ftpbuf_t *ftp, php_socket_t s)
 {
        fd_set          write_set;
        struct timeval  tv;
@@ -1320,7 +1320,7 @@ data_writeable(ftpbuf_t *ftp, int s)
 /* {{{ my_accept
  */
 int
-my_accept(ftpbuf_t *ftp, int s, struct sockaddr *addr, int *addrlen)
+my_accept(ftpbuf_t *ftp, php_socket_t s, struct sockaddr *addr, int *addrlen)
 {
        fd_set          accept_set;
        struct timeval  tv;
index 2fffe08f9456ea0f882a49252a401576188a60f2..f934a989ee2181607cc56524670ca010e30aa9a6 100644 (file)
@@ -46,7 +46,7 @@ typedef enum ftptype {
 typedef struct databuf
 {
        int             listener;               /* listener socket */
-       int             fd;                     /* data connection */
+       php_socket_t            fd;                     /* data connection */
        ftptype_t       type;                   /* transfer type */
        char            buf[FTP_BUFSIZE];       /* data buffer */
 #if HAVE_OPENSSL_EXT
@@ -57,7 +57,7 @@ typedef struct databuf
 
 typedef struct ftpbuf
 {
-       int             fd;                     /* control connection */
+       php_socket_t            fd;                     /* control connection */
        php_sockaddr_storage    localaddr;      /* local address */
        int             resp;                   /* last response code */
        char            inbuf[FTP_BUFSIZE];     /* last response text */
index 110058ac263112ffabe45ccb83b1fcfd7fe6b753..4e46d7694a2b9723aaa658f7e7c017e7e1859f78 100644 (file)
 #include "ext/standard/basic_functions.h"
 #include "php_ini.h"
 #include "streamsfuncs.h"
-
+#include "php_network.h"
+#include "php_string.h"
 
 #ifndef PHP_WIN32
 #define php_select(m, r, w, e, t)      select(m, r, w, e, t)
+#else
+#include "win32/select.h"
 #endif
 
 static php_stream_context *decode_context_param(zval *contextresource TSRMLS_DC);
@@ -342,11 +345,11 @@ PHP_FUNCTION(stream_get_wrappers)
 /* }}} */
 
 /* {{{ stream_select related functions */
-static int stream_array_to_fd_set(zval *stream_array, fd_set *fds, int *max_fd TSRMLS_DC)
+static int stream_array_to_fd_set(zval *stream_array, fd_set *fds, php_socket_t *max_fd TSRMLS_DC)
 {
        zval **elem;
        php_stream *stream;
-       int this_fd;
+       php_socket_t this_fd;
 
        if (Z_TYPE_P(stream_array) != IS_ARRAY) {
                return 0;
index f04447745aaea3a4aaf2fb0df2d727ee7f265cdc..eee8530ac73ae632e612b3e6f9bff7db39dbe331 100644 (file)
@@ -280,7 +280,7 @@ typedef int php_non_blocking_flags_t;
  * enable non-blocking mode on the socket.
  * */
 /* {{{ php_network_connect_socket */
-PHPAPI int php_network_connect_socket(int sockfd,
+PHPAPI int php_network_connect_socket(php_socket_t sockfd,
                const struct sockaddr *addr,
                socklen_t addrlen,
                int asynchronous,
@@ -341,7 +341,7 @@ PHPAPI int php_network_connect_socket(int sockfd,
                   BSD-derived systems set errno correctly
                   Solaris returns -1 from getsockopt in case of error
                   */
-               if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
+               if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, (char*)&error, &len) < 0) {
                        ret = -1;
                }
        } else {
@@ -393,11 +393,12 @@ static inline void sub_times(struct timeval a, struct timeval b, struct timeval
  * Returns the bound socket, or -1 on failure.
  * */
 /* {{{ php_network_bind_socket_to_local_addr */
-int php_network_bind_socket_to_local_addr(const char *host, unsigned port,
+php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned port,
                int socktype, char **error_string, int *error_code
                TSRMLS_DC)
 {
-       int num_addrs, sock, n, err = 0;
+       int num_addrs, n, err = 0;
+       php_socket_t sock;
        struct sockaddr **sal, **psal, *sa;
        socklen_t socklen;
 
@@ -442,7 +443,7 @@ int php_network_bind_socket_to_local_addr(const char *host, unsigned port,
 #ifdef SO_REUSEADDR
                        {
                                int val = 1;
-                               setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
+                               setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&val, sizeof(val));
                        }
 #endif
                        
@@ -543,7 +544,7 @@ static void populate_name(
        }
 }
 
-PHPAPI int php_network_get_peer_name(int sock, 
+PHPAPI int php_network_get_peer_name(php_socket_t sock, 
                char **textaddr, long *textaddrlen,
                struct sockaddr **addr,
                socklen_t *addrlen
@@ -562,7 +563,7 @@ PHPAPI int php_network_get_peer_name(int sock,
        return -1;
 }
 
-PHPAPI int php_network_get_sock_name(int sock, 
+PHPAPI int php_network_get_sock_name(php_socket_t sock, 
                char **textaddr, long *textaddrlen,
                struct sockaddr **addr,
                socklen_t *addrlen
@@ -592,7 +593,7 @@ PHPAPI int php_network_get_sock_name(int sock,
  * */
 
 /* {{{ php_network_accept_incoming */
-PHPAPI int php_network_accept_incoming(int srvsock,
+PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
                char **textaddr, long *textaddrlen,
                struct sockaddr **addr,
                socklen_t *addrlen,
@@ -601,7 +602,7 @@ PHPAPI int php_network_accept_incoming(int srvsock,
                int *error_code
                TSRMLS_DC)
 {
-       int clisock = -1;
+       php_socket_t clisock = -1;
        fd_set rset;
        int error, n;
        php_sockaddr_storage sa;
@@ -651,12 +652,13 @@ PHPAPI int php_network_accept_incoming(int srvsock,
  * */
 
 /* {{{ php_network_connect_socket_to_host */
-int php_network_connect_socket_to_host(const char *host, unsigned short port,
+php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port,
                int socktype, int asynchronous, struct timeval *timeout, char **error_string,
                int *error_code
                TSRMLS_DC)
 {
-       int num_addrs, sock, n, fatal = 0;
+       int num_addrs, n, fatal = 0;
+       php_socket_t sock;
        struct sockaddr **sal, **psal, *sa;
        struct timeval working_timeout;
        socklen_t socklen;
@@ -865,7 +867,7 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize)
 /* }}} */
 
 /* deprecated */
-PHPAPI php_stream *_php_stream_sock_open_from_socket(int socket, const char *persistent_id STREAMS_DC TSRMLS_DC)
+PHPAPI php_stream *_php_stream_sock_open_from_socket(php_socket_t socket, const char *persistent_id STREAMS_DC TSRMLS_DC)
 {
        php_stream *stream;
        php_netstream_data_t *sock;
index 343996435325ec08b213eaa178916ed7a7131423..d0bb26e7f630da01ae45e095716bf783a86c3b74 100644 (file)
@@ -80,6 +80,12 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize);
 #include <stddef.h>
 #endif
 
+#ifdef PHP_WIN32
+typedef SOCKET php_socket_t;
+#else
+typedef int php_socket_t;
+#endif
+
 #ifdef PHP_WIN32
 # define SOCK_ERR INVALID_SOCKET
 # define SOCK_CONN_ERR SOCKET_ERROR
@@ -106,12 +112,12 @@ typedef struct {
 } php_sockaddr_storage;
 #endif
 
-PHPAPI int php_network_connect_socket_to_host(const char *host, unsigned short port,
+PHPAPI php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port,
                int socktype, int asynchronous, struct timeval *timeout, char **error_string,
                int *error_code
                TSRMLS_DC);
 
-PHPAPI int php_network_connect_socket(int sockfd,
+PHPAPI int php_network_connect_socket(php_socket_t sockfd,
                const struct sockaddr *addr,
                socklen_t addrlen,
                int asynchronous,
@@ -122,11 +128,11 @@ PHPAPI int php_network_connect_socket(int sockfd,
 #define php_connect_nonb(sock, addr, addrlen, timeout) \
        php_network_connect_socket((sock), (addr), (addrlen), 0, (timeout), NULL, NULL)
 
-PHPAPI int php_network_bind_socket_to_local_addr(const char *host, unsigned port,
+PHPAPI php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned port,
                int socktype, char **error_string, int *error_code
                TSRMLS_DC);
 
-PHPAPI int php_network_accept_incoming(int srvsock,
+PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock,
                char **textaddr, long *textaddrlen,
                struct sockaddr **addr,
                socklen_t *addrlen,
@@ -135,13 +141,13 @@ PHPAPI int php_network_accept_incoming(int srvsock,
                int *error_code
                TSRMLS_DC);
 
-PHPAPI int php_network_get_sock_name(int sock, 
+PHPAPI int php_network_get_sock_name(php_socket_t sock, 
                char **textaddr, long *textaddrlen,
                struct sockaddr **addr,
                socklen_t *addrlen
                TSRMLS_DC);
        
-PHPAPI int php_network_get_peer_name(int sock, 
+PHPAPI int php_network_get_peer_name(php_socket_t sock, 
                char **textaddr, long *textaddrlen,
                struct sockaddr **addr,
                socklen_t *addrlen
@@ -150,8 +156,9 @@ PHPAPI int php_network_get_peer_name(int sock,
 void php_any_addr(int family, php_sockaddr_storage *addr, unsigned short port);
 int php_sockaddr_size(php_sockaddr_storage *addr);
 
+
 struct _php_netstream_data_t   {
-       int socket;
+       php_socket_t socket;
        char is_blocked;
        struct timeval timeout;
        char timeout_event;
@@ -162,7 +169,7 @@ extern php_stream_ops php_stream_socket_ops;
 extern php_stream_ops php_stream_generic_socket_ops;
 #define PHP_STREAM_IS_SOCKET   (&php_stream_socket_ops)
 
-PHPAPI php_stream *_php_stream_sock_open_from_socket(int socket, const char *persistent_id STREAMS_DC TSRMLS_DC );
+PHPAPI php_stream *_php_stream_sock_open_from_socket(php_socket_t socket, const char *persistent_id STREAMS_DC TSRMLS_DC );
 /* open a connection to a host using php_hostconnect and return a stream */
 PHPAPI php_stream *_php_stream_sock_open_host(const char *host, unsigned short port,
                int socktype, struct timeval *timeout, const char *persistent_id STREAMS_DC TSRMLS_DC);
index c2547bd7d33affcb849e57f087d2d9e72c3632fc..58e9e28a7c5a3f49e57014ba533840dce6506eef 100644 (file)
@@ -422,7 +422,8 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
                php_stream_xport_param *xparam TSRMLS_DC)
 {
        char *host = NULL;
-       int portno, err;
+       int portno;
+       int err;
        int ret;
 
 #ifdef AF_UNIX
@@ -441,7 +442,7 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
                parse_unix_address(xparam, &unix_addr TSRMLS_CC);
 
                ret = php_network_connect_socket(sock->socket,
-                               (const struct sockaddr *)&unix_addr, sizeof(unix_addr),
+                               (const struct sockaddr *)&unix_addr, (socklen_t)sizeof(unix_addr),
                                xparam->op == STREAM_XPORT_OP_CONNECT_ASYNC, xparam->inputs.timeout,
                                xparam->want_errortext ? &xparam->outputs.error_text : NULL,
                                &err);
@@ -465,7 +466,8 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
        sock->socket = php_network_connect_socket_to_host(host, portno,
                        stream->ops == &php_stream_udp_socket_ops ? SOCK_DGRAM : SOCK_STREAM,
                        xparam->op == STREAM_XPORT_OP_CONNECT_ASYNC,
-                       xparam->inputs.timeout, xparam->want_errortext ? &xparam->outputs.error_text : NULL,
+                       xparam->inputs.timeout,
+                       xparam->want_errortext ? &xparam->outputs.error_text : NULL,
                        &err
                        TSRMLS_CC);
        
index 63dcc165f9005c4461b6f9035b540fe252c38c12..579ed3edee19631301004ed916860865df6131b9 100644 (file)
@@ -17,6 +17,7 @@
 */
 
 #include "php.h"
+#include "php_network.h"
 
 /* $Id$ */
 
  * get the OS file handle from regular fd's and sockets and then use WaitForMultipleObjects().
  * This implementation is not as feature-full as posix select, but it works for our purposes
  */
-PHPAPI int php_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeval *tv)
+PHPAPI int php_select(php_socket_t max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeval *tv)
 {
        HANDLE *handles;
        DWORD waitret;
        DWORD ms_total;
-       int i, f, s, fd_count = 0, sock_count = 0;
+       int f, s, fd_count = 0, sock_count = 0;
        int retval;
+       php_socket_t i;
        fd_set ard, awr, aex; /* active fd sets */
 
        for (i = 0; i < max_fd; i++) {