wez Sat Feb 15 22:48:49 2003 EDT Modified files: /php4/ext/curl interface.c streams.c /php4/ext/fbsql php_fbsql.c /php4/ext/ftp ftp.c /php4/ext/hyperwave hg_comm.c hw.c /php4/ext/imap php_imap.c /php4/ext/ldap ldap.c /php4/ext/mcal php_mcal.c /php4/ext/mysql php_mysql.c /php4/ext/odbc php_odbc.c /php4/ext/rpc/com com_wrapper.c /php4/ext/snmp snmp.c /php4/ext/standard dns.c file.c fsock.c ftp_fopen_wrapper.c http_fopen_wrapper.c pack.c /php4/ext/zlib zlib.c /php4/main fopen_wrappers.c mergesort.c network.c php.h php_open_temporary_file.c streams.c /php4 run-tests.php /php4/win32 php4dllts.dsp sendmail.c time.h Log: A add much more useful select(2) implementation than is provided by windows sockets. The winsock implementation will only work with sockets; our implementation works with sockets and file descriptors. By association, stream_select() will now operate correctly with files, pipes and sockets. This change required linking against the winsock2 library. In terms of compatibility, only older versions of windows 95 do not have winsock2 installed by default. It is available as a redistributable file, and is most likely installed by any OS patches (eg: Internet Explorer) applied by the user. Also, add a win32 compatible pipe test when opening a stream from a pipe. This test will only work on NT, win2k and XP platforms. Without this test, interleaved fread() and select() calls would cause the read buffer to be clobbered. I will be working on a fix for this issue for win9x.
Index: php4/ext/curl/interface.c diff -u php4/ext/curl/interface.c:1.7 php4/ext/curl/interface.c:1.8 --- php4/ext/curl/interface.c:1.7 Mon Feb 3 15:56:23 2003 +++ php4/ext/curl/interface.c Sat Feb 15 22:48:43 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interface.c,v 1.7 2003/02/03 20:56:23 iliaa Exp $ */ +/* $Id: interface.c,v 1.8 2003/02/16 03:48:43 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -30,7 +30,7 @@ #include <string.h> #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #include <sys/types.h> #endif Index: php4/ext/curl/streams.c diff -u php4/ext/curl/streams.c:1.3 php4/ext/curl/streams.c:1.4 --- php4/ext/curl/streams.c:1.3 Tue Dec 31 11:06:21 2002 +++ php4/ext/curl/streams.c Sat Feb 15 22:48:43 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.3 2002/12/31 16:06:21 sebastian Exp $ */ +/* $Id: streams.c,v 1.4 2003/02/16 03:48:43 wez Exp $ */ /* This file implements cURL based wrappers. * NOTE: If you are implementing your own streams that are intended to @@ -36,7 +36,7 @@ #include <string.h> #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #include <sys/types.h> #endif Index: php4/ext/fbsql/php_fbsql.c diff -u php4/ext/fbsql/php_fbsql.c:1.92 php4/ext/fbsql/php_fbsql.c:1.93 --- php4/ext/fbsql/php_fbsql.c:1.92 Wed Feb 12 15:44:00 2003 +++ php4/ext/fbsql/php_fbsql.c Sat Feb 15 22:48:44 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fbsql.c,v 1.92 2003/02/12 20:44:00 iliaa Exp $ */ +/* $Id: php_fbsql.c,v 1.93 2003/02/16 03:48:44 wez Exp $ */ /* TODO: * @@ -43,7 +43,7 @@ #include "ext/standard/php_string.h" #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #else #include <php_config.h> Index: php4/ext/ftp/ftp.c diff -u php4/ext/ftp/ftp.c:1.79 php4/ext/ftp/ftp.c:1.80 --- php4/ext/ftp/ftp.c:1.79 Fri Feb 14 15:15:11 2003 +++ php4/ext/ftp/ftp.c Sat Feb 15 22:48:44 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ftp.c,v 1.79 2003/02/14 20:15:11 iliaa Exp $ */ +/* $Id: ftp.c,v 1.80 2003/02/16 03:48:44 wez Exp $ */ #include "php.h" @@ -33,7 +33,7 @@ #include <string.h> #include <time.h> #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #elif defined(NETWARE) #ifdef USE_WINSOCK /* Modified to use Winsock (NOVSOCK2.H), atleast for now */ #include <novsock2.h> Index: php4/ext/hyperwave/hg_comm.c diff -u php4/ext/hyperwave/hg_comm.c:1.54 php4/ext/hyperwave/hg_comm.c:1.55 --- php4/ext/hyperwave/hg_comm.c:1.54 Tue Jan 14 12:45:30 2003 +++ php4/ext/hyperwave/hg_comm.c Sat Feb 15 22:48:44 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hg_comm.c,v 1.54 2003/01/14 17:45:30 iliaa Exp $ */ +/* $Id: hg_comm.c,v 1.55 2003/02/16 03:48:44 wez Exp $ */ /* #define HW_DEBUG */ @@ -31,7 +31,7 @@ #include <string.h> #include <sys/types.h> #ifdef PHP_WIN32 -# include <winsock.h> +# include <winsock2.h> # define EWOULDBLOCK WSAEWOULDBLOCK # define ETIMEDOUT WSAETIMEDOUT # define bcopy memcpy Index: php4/ext/hyperwave/hw.c diff -u php4/ext/hyperwave/hw.c:1.118 php4/ext/hyperwave/hw.c:1.119 --- php4/ext/hyperwave/hw.c:1.118 Mon Jan 27 04:11:15 2003 +++ php4/ext/hyperwave/hw.c Sat Feb 15 22:48:44 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hw.c,v 1.118 2003/01/27 09:11:15 steinm Exp $ */ +/* $Id: hw.c,v 1.119 2003/02/16 03:48:44 wez Exp $ */ #include <stdlib.h> #include <errno.h> @@ -34,7 +34,7 @@ #include "SAPI.h" #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #endif #if HYPERWAVE Index: php4/ext/imap/php_imap.c diff -u php4/ext/imap/php_imap.c:1.159 php4/ext/imap/php_imap.c:1.160 --- php4/ext/imap/php_imap.c:1.159 Tue Feb 11 17:57:22 2003 +++ php4/ext/imap/php_imap.c Sat Feb 15 22:48:44 2003 @@ -26,7 +26,7 @@ | PHP 4.0 updates: Zeev Suraski <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: php_imap.c,v 1.159 2003/02/11 22:57:22 iliaa Exp $ */ +/* $Id: php_imap.c,v 1.160 2003/02/16 03:48:44 wez Exp $ */ #define IMAP41 @@ -50,7 +50,7 @@ #include <signal.h> #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #include <stdlib.h> #include "win32/sendmail.h" MAILSTREAM DEFAULTPROTO; Index: php4/ext/ldap/ldap.c diff -u php4/ext/ldap/ldap.c:1.133 php4/ext/ldap/ldap.c:1.134 --- php4/ext/ldap/ldap.c:1.133 Sat Jan 18 16:31:05 2003 +++ php4/ext/ldap/ldap.c Sat Feb 15 22:48:45 2003 @@ -22,7 +22,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ldap.c,v 1.133 2003/01/18 21:31:05 iliaa Exp $ */ +/* $Id: ldap.c,v 1.134 2003/02/16 03:48:45 wez Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -46,7 +46,7 @@ #ifdef PHP_WIN32 #include <string.h> #if HAVE_NSLDAP -#include <winsock.h> +#include <winsock2.h> #endif #define strdup _strdup #undef WINDOWS @@ -286,7 +286,7 @@ php_info_print_table_start(); php_info_print_table_row(2, "LDAP Support", "enabled" ); - php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.133 2003/01/18 21:31:05 iliaa Exp $" ); + php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.134 2003/02/16 +03:48:45 wez Exp $" ); if (LDAPG(max_links) == -1) { snprintf(tmp, 31, "%ld/unlimited", LDAPG(num_links)); Index: php4/ext/mcal/php_mcal.c diff -u php4/ext/mcal/php_mcal.c:1.56 php4/ext/mcal/php_mcal.c:1.57 --- php4/ext/mcal/php_mcal.c:1.56 Wed Jan 29 21:33:14 2003 +++ php4/ext/mcal/php_mcal.c Sat Feb 15 22:48:45 2003 @@ -42,7 +42,7 @@ #include "ext/standard/info.h" #include "ext/standard/basic_functions.h" #ifdef PHP_WIN32 -#include "winsock.h" +#include "winsock2.h" #endif static void cal_close_it(zend_rsrc_list_entry *rsrc TSRMLS_DC); Index: php4/ext/mysql/php_mysql.c diff -u php4/ext/mysql/php_mysql.c:1.184 php4/ext/mysql/php_mysql.c:1.185 --- php4/ext/mysql/php_mysql.c:1.184 Wed Jan 29 21:33:14 2003 +++ php4/ext/mysql/php_mysql.c Sat Feb 15 22:48:45 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mysql.c,v 1.184 2003/01/30 02:33:14 iliaa Exp $ */ +/* $Id: php_mysql.c,v 1.185 2003/02/16 03:48:45 wez Exp $ */ /* TODO: * @@ -37,7 +37,7 @@ #if HAVE_MYSQL #ifdef PHP_WIN32 -# include <winsock.h> +# include <winsock2.h> # define signal(a, b) NULL #elif defined(NETWARE) # include <sys/socket.h> Index: php4/ext/odbc/php_odbc.c diff -u php4/ext/odbc/php_odbc.c:1.154 php4/ext/odbc/php_odbc.c:1.155 --- php4/ext/odbc/php_odbc.c:1.154 Thu Feb 6 21:59:16 2003 +++ php4/ext/odbc/php_odbc.c Sat Feb 15 22:48:45 2003 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_odbc.c,v 1.154 2003/02/07 02:59:16 kalowsky Exp $ */ +/* $Id: php_odbc.c,v 1.155 2003/02/16 03:48:45 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -44,7 +44,7 @@ #include "php_ini.h" #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #define ODBC_TYPE "Win32" #define PHP_ODBC_TYPE ODBC_TYPE Index: php4/ext/rpc/com/com_wrapper.c diff -u php4/ext/rpc/com/com_wrapper.c:1.90 php4/ext/rpc/com/com_wrapper.c:1.91 --- php4/ext/rpc/com/com_wrapper.c:1.90 Mon Feb 10 18:22:48 2003 +++ php4/ext/rpc/com/com_wrapper.c Sat Feb 15 22:48:46 2003 @@ -18,7 +18,7 @@ | Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: com_wrapper.c,v 1.90 2003/02/10 23:22:48 wez Exp $ */ +/* $Id: com_wrapper.c,v 1.91 2003/02/16 03:48:46 wez Exp $ */ /* * This module implements support for COM components that support the IDispatch * interface. Both local (COM) and remote (DCOM) components can be accessed. @@ -56,12 +56,12 @@ #define _WIN32_DCOM +#include "php.h" +#include "php_ini.h" + #include <iostream.h> #include <math.h> #include <ocidl.h> - -#include "php.h" -#include "php_ini.h" #include "../rpc.h" #include "../php_rpc.h" Index: php4/ext/snmp/snmp.c diff -u php4/ext/snmp/snmp.c:1.75 php4/ext/snmp/snmp.c:1.76 --- php4/ext/snmp/snmp.c:1.75 Fri Jan 24 04:52:46 2003 +++ php4/ext/snmp/snmp.c Sat Feb 15 22:48:47 2003 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: snmp.c,v 1.75 2003/01/24 09:52:46 sniper Exp $ */ +/* $Id: snmp.c,v 1.76 2003/02/16 03:48:47 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -33,7 +33,7 @@ #include <sys/types.h> #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #include <errno.h> #include <process.h> #include "win32/time.h" Index: php4/ext/standard/dns.c diff -u php4/ext/standard/dns.c:1.53 php4/ext/standard/dns.c:1.54 --- php4/ext/standard/dns.c:1.53 Tue Dec 31 11:07:36 2002 +++ php4/ext/standard/dns.c Sat Feb 15 22:48:47 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dns.c,v 1.53 2002/12/31 16:07:36 sebastian Exp $ */ +/* $Id: dns.c,v 1.54 2003/02/16 03:48:47 wez Exp $ */ /* {{{ includes */ #include "php.h" @@ -44,7 +44,7 @@ #include "resolv.h" #endif #endif /* HAVE_LIBBIND */ -#include <winsock.h> +#include <winsock2.h> #else /* This holds good for NetWare too, both for Winsock and Berkeley sockets */ #include <netinet/in.h> #if HAVE_ARPA_INET_H Index: php4/ext/standard/file.c diff -u php4/ext/standard/file.c:1.301 php4/ext/standard/file.c:1.302 --- php4/ext/standard/file.c:1.301 Mon Feb 10 17:26:53 2003 +++ php4/ext/standard/file.c Sat Feb 15 22:48:47 2003 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: file.c,v 1.301 2003/02/10 22:26:53 iliaa Exp $ */ +/* $Id: file.c,v 1.302 2003/02/16 03:48:47 wez Exp $ */ /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */ @@ -44,7 +44,7 @@ #include <fcntl.h> #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #include "win32/winutil.h" @@ -821,6 +821,160 @@ } /* }}} */ +#ifdef PHP_WIN32 +/* Win32 select() will only work with sockets, so we roll our own implementation that +will + * 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 + */ +static int php_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct +timeval *tv) +{ + HANDLE *handles; + DWORD ms, waitret; + DWORD ms_total; + int i, f, s, fd_count = 0, sock_count = 0; + int retval; + fd_set ard, awr, aex; /* active fd sets */ + long sock_events; + + for (i = 0; i < max_fd; i++) { + if (FD_ISSET(i, rfds) || FD_ISSET(i, wfds) || FD_ISSET(i, efds)) { + if (_get_osfhandle(i) == 0xffffffff) { + /* it is a socket */ + sock_count++; + } else { + fd_count++; + } + } + } + + if (fd_count + sock_count == 0) { + return 0; + } + + handles = (HANDLE*)emalloc((fd_count + sock_count) * sizeof(HANDLE)); + + /* populate the events and handles arrays */ + f = 0; + s = 0; + for (i = 0; i < max_fd; i++) { + if (FD_ISSET(i, rfds) || FD_ISSET(i, wfds) || FD_ISSET(i, efds)) { + long h = _get_osfhandle(i); + if (h == 0xFFFFFFFF) { + HANDLE evt; + long evt_flags = 0; + + if (FD_ISSET(i, rfds)) { + evt_flags |= +FD_READ|FD_CONNECT|FD_ACCEPT|FD_CLOSE; + } + if (FD_ISSET(i, wfds)) { + evt_flags |= FD_WRITE; + } + if (FD_ISSET(i, efds)) { + evt_flags |= FD_OOB; + } + + evt = WSACreateEvent(); + WSAEventSelect(i, evt, evt_flags); + + handles[fd_count + s] = evt; + s++; + } else { + handles[f++] = (HANDLE)h; + } + } + } + + /* calculate how long we need to wait in milliseconds */ + if (tv == NULL) { + ms_total = INFINITE; + } else { + ms_total = tv->tv_sec * 1000; + ms_total += tv->tv_usec / 1000; + } + + waitret = MsgWaitForMultipleObjects(fd_count + sock_count, handles, FALSE, +ms_total, QS_ALLEVENTS); + + if (waitret == WAIT_TIMEOUT) { + retval = 0; + } else if (waitret == 0xFFFFFFFF) { + retval = -1; + } else { + + FD_ZERO(&ard); + FD_ZERO(&awr); + FD_ZERO(&aex); + + f = 0; + retval = 0; + for (i = 0; i < max_fd; i++) { + if (FD_ISSET(i, rfds) || FD_ISSET(i, wfds) || FD_ISSET(i, +efds)) { + if (f >= fd_count) { + /* socket event */ + HANDLE evt = handles[f]; + + if (WAIT_OBJECT_0 == WaitForSingleObject(evt, +0)) { + /* check for various signal states */ + if (FD_ISSET(i, rfds)) { + WSAEventSelect(i, evt, +FD_READ|FD_CONNECT|FD_ACCEPT|FD_CLOSE); + if (WAIT_OBJECT_0 == +WaitForSingleObject(evt, 0)) { + FD_SET(i, &ard); + } + } + if (FD_ISSET(i, wfds)) { + WSAEventSelect(i, evt, +FD_WRITE); + if (WAIT_OBJECT_0 == +WaitForSingleObject(evt, 0)) { + FD_SET(i, &awr); + } + } + if (FD_ISSET(i, efds)) { + WSAEventSelect(i, evt, FD_OOB); + if (WAIT_OBJECT_0 == +WaitForSingleObject(evt, 0)) { + FD_SET(i, &aex); + } + } + retval++; + } + + WSACloseEvent(evt); + + } else { + if (WAIT_OBJECT_0 == +WaitForSingleObject(handles[f], 0)) { + if (FD_ISSET(i, rfds)) { + FD_SET(i, &ard); + } + if (FD_ISSET(i, wfds)) { + FD_SET(i, &awr); + } + if (FD_ISSET(i, efds)) { + FD_SET(i, &aex); + } + retval++; + } + + } + f++; + } + } + + if (rfds) { + *rfds = ard; + } + if (wfds) { + *wfds = awr; + } + if (efds) { + *efds = aex; + } + } + + efree(handles); + + return retval; +} +#else +#define php_select(m, r, w, e, t) select(m, r, w, e, t) +#endif + /* {{{ proto int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec]) Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec */ PHP_FUNCTION(stream_select) @@ -867,11 +1021,11 @@ } } - retval = select(max_fd+1, &rfds, &wfds, &efds, tv_p); + retval = php_select(max_fd+1, &rfds, &wfds, &efds, tv_p); if (retval == -1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to select [%d]: %s", - errno, strerror(errno)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to select [%d]: %s +(max_fd=%d)", + errno, strerror(errno), max_fd); RETURN_FALSE; } Index: php4/ext/standard/fsock.c diff -u php4/ext/standard/fsock.c:1.108 php4/ext/standard/fsock.c:1.109 --- php4/ext/standard/fsock.c:1.108 Wed Jan 8 22:33:15 2003 +++ php4/ext/standard/fsock.c Sat Feb 15 22:48:47 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fsock.c,v 1.108 2003/01/09 03:33:15 iliaa Exp $ */ +/* $Id: fsock.c,v 1.109 2003/02/16 03:48:47 wez Exp $ */ /* converted to PHP Streams and moved much code to main/network.c [wez] */ @@ -46,7 +46,7 @@ #include <sys/socket.h> #endif #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #elif defined(NETWARE) #ifdef NEW_LIBC #ifdef USE_WINSOCK Index: php4/ext/standard/ftp_fopen_wrapper.c diff -u php4/ext/standard/ftp_fopen_wrapper.c:1.42 php4/ext/standard/ftp_fopen_wrapper.c:1.43 --- php4/ext/standard/ftp_fopen_wrapper.c:1.42 Thu Feb 13 09:40:17 2003 +++ php4/ext/standard/ftp_fopen_wrapper.c Sat Feb 15 22:48:47 2003 @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: ftp_fopen_wrapper.c,v 1.42 2003/02/13 14:40:17 iliaa Exp $ */ +/* $Id: ftp_fopen_wrapper.c,v 1.43 2003/02/16 03:48:47 wez Exp $ */ #include "php.h" #include "php_globals.h" @@ -32,7 +32,7 @@ #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #elif defined(NETWARE) @@ -55,7 +55,7 @@ #endif #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #elif defined(NETWARE) && defined(USE_WINSOCK) /*#include <ws2nlm.h>*/ #include <novsock2.h> Index: php4/ext/standard/http_fopen_wrapper.c diff -u php4/ext/standard/http_fopen_wrapper.c:1.61 php4/ext/standard/http_fopen_wrapper.c:1.62 --- php4/ext/standard/http_fopen_wrapper.c:1.61 Thu Feb 13 09:40:17 2003 +++ php4/ext/standard/http_fopen_wrapper.c Sat Feb 15 22:48:47 2003 @@ -18,7 +18,7 @@ | Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: http_fopen_wrapper.c,v 1.61 2003/02/13 14:40:17 iliaa Exp $ */ +/* $Id: http_fopen_wrapper.c,v 1.62 2003/02/16 03:48:47 wez Exp $ */ #include "php.h" #include "php_globals.h" @@ -36,7 +36,7 @@ #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #elif defined(NETWARE) @@ -59,7 +59,7 @@ #endif #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #elif defined(NETWARE) && defined(USE_WINSOCK) /*#include <ws2nlm.h>*/ #include <novsock2.h> Index: php4/ext/standard/pack.c diff -u php4/ext/standard/pack.c:1.45 php4/ext/standard/pack.c:1.46 --- php4/ext/standard/pack.c:1.45 Sat Jan 11 18:05:19 2003 +++ php4/ext/standard/pack.c Sat Feb 15 22:48:47 2003 @@ -15,7 +15,7 @@ | Author: Chris Schneider <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: pack.c,v 1.45 2003/01/11 23:05:19 moriyoshi Exp $ */ +/* $Id: pack.c,v 1.46 2003/02/16 03:48:47 wez Exp $ */ #include "php.h" @@ -27,7 +27,7 @@ #include <fcntl.h> #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #elif defined(NETWARE) Index: php4/ext/zlib/zlib.c diff -u php4/ext/zlib/zlib.c:1.161 php4/ext/zlib/zlib.c:1.162 --- php4/ext/zlib/zlib.c:1.161 Mon Feb 10 14:04:41 2003 +++ php4/ext/zlib/zlib.c Sat Feb 15 22:48:47 2003 @@ -18,7 +18,7 @@ | Jade Nicoletti <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: zlib.c,v 1.161 2003/02/10 19:04:41 moriyoshi Exp $ */ +/* $Id: zlib.c,v 1.162 2003/02/16 03:48:47 wez Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -36,7 +36,7 @@ #include <fcntl.h> #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #else Index: php4/main/fopen_wrappers.c diff -u php4/main/fopen_wrappers.c:1.155 php4/main/fopen_wrappers.c:1.156 --- php4/main/fopen_wrappers.c:1.155 Tue Dec 31 10:58:51 2002 +++ php4/main/fopen_wrappers.c Sat Feb 15 22:48:48 2003 @@ -16,7 +16,7 @@ | Jim Winstead <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.c,v 1.155 2002/12/31 15:58:51 sebastian Exp $ */ +/* $Id: fopen_wrappers.c,v 1.156 2003/02/16 03:48:48 wez Exp $ */ /* {{{ includes */ @@ -33,7 +33,7 @@ #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #elif defined(NETWARE) @@ -74,7 +74,7 @@ #endif #ifdef PHP_WIN32 -#include <winsock.h> +#include <winsock2.h> #elif defined(NETWARE) && defined(USE_WINSOCK) /*#include <ws2nlm.h>*/ #include <novsock2.h> Index: php4/main/mergesort.c diff -u php4/main/mergesort.c:1.12 php4/main/mergesort.c:1.13 --- php4/main/mergesort.c:1.12 Mon Sep 9 07:17:40 2002 +++ php4/main/mergesort.c Sat Feb 15 22:48:48 2003 @@ -61,7 +61,7 @@ #include "php.h" #ifdef PHP_WIN32 -#include <winsock.h> /* Includes definition for u_char */ +#include <winsock2.h> /* Includes definition for u_char */ #endif #if defined(NETWARE) && !defined(NEW_LIBC) Index: php4/main/network.c diff -u php4/main/network.c:1.86 php4/main/network.c:1.87 --- php4/main/network.c:1.86 Thu Feb 13 09:35:47 2003 +++ php4/main/network.c Sat Feb 15 22:48:48 2003 @@ -16,7 +16,7 @@ | Streams work by Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: network.c,v 1.86 2003/02/13 14:35:47 wez Exp $ */ +/* $Id: network.c,v 1.87 2003/02/16 03:48:48 wez Exp $ */ /*#define DEBUG_MAIN_NETWORK 1*/ @@ -26,7 +26,7 @@ #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #elif defined(NETWARE) Index: php4/main/php.h diff -u php4/main/php.h:1.180 php4/main/php.h:1.181 --- php4/main/php.h:1.180 Fri Jan 3 07:48:14 2003 +++ php4/main/php.h Sat Feb 15 22:48:48 2003 @@ -17,10 +17,14 @@ +----------------------------------------------------------------------+ */ -/* $Id: php.h,v 1.180 2003/01/03 12:48:14 hyanantha Exp $ */ +/* $Id: php.h,v 1.181 2003/02/16 03:48:48 wez Exp $ */ #ifndef PHP_H #define PHP_H + +#ifdef PHP_WIN32 +#include <winsock2.h> +#endif #ifdef HAVE_DMALLOC #include <dmalloc.h> Index: php4/main/php_open_temporary_file.c diff -u php4/main/php_open_temporary_file.c:1.22 php4/main/php_open_temporary_file.c:1.23 --- php4/main/php_open_temporary_file.c:1.22 Thu Feb 13 12:36:35 2003 +++ php4/main/php_open_temporary_file.c Sat Feb 15 22:48:48 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_open_temporary_file.c,v 1.22 2003/02/13 17:36:35 wez Exp $ */ +/* $Id: php_open_temporary_file.c,v 1.23 2003/02/16 03:48:48 wez Exp $ */ #include "php.h" @@ -27,7 +27,7 @@ #ifdef PHP_WIN32 #include <windows.h> -#include <winsock.h> +#include <winsock2.h> #define O_RDONLY _O_RDONLY #include "win32/param.h" #include "win32/winutil.h" Index: php4/main/streams.c diff -u php4/main/streams.c:1.155 php4/main/streams.c:1.156 --- php4/main/streams.c:1.155 Sat Feb 15 14:56:12 2003 +++ php4/main/streams.c Sat Feb 15 22:48:48 2003 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.155 2003/02/15 19:56:12 moriyoshi Exp $ */ +/* $Id: streams.c,v 1.156 2003/02/16 03:48:48 wez Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -1332,6 +1332,15 @@ struct stat sb; self->is_pipe = (fstat(self->fd, &sb) == 0 && S_ISFIFO(sb.st_mode)) ? 1 : 0; } +#elif defined(PHP_WIN32) + { + long handle = _get_osfhandle(self->fd); + DWORD in_buf_size, out_buf_size; + + if (handle != 0xFFFFFFFF) { + self->is_pipe = GetNamedPipeInfo((HANDLE)handle, NULL, +&out_buf_size, &in_buf_size, NULL); + } + } #endif stream = php_stream_alloc_rel(&php_stream_stdio_ops, self, 0, mode); @@ -1364,6 +1373,15 @@ if (self->fd >= 0) { struct stat sb; self->is_pipe = (fstat(self->fd, &sb) == 0 && S_ISFIFO(sb.st_mode)) ? 1 : 0; + } +#elif defined(PHP_WIN32) + { + long handle = _get_osfhandle(self->fd); + DWORD in_buf_size, out_buf_size; + + if (handle != 0xFFFFFFFF) { + self->is_pipe = GetNamedPipeInfo((HANDLE)handle, NULL, +&out_buf_size, &in_buf_size, NULL); + } } #endif Index: php4/run-tests.php diff -u php4/run-tests.php:1.143 php4/run-tests.php:1.144 --- php4/run-tests.php:1.143 Sat Feb 15 13:09:52 2003 +++ php4/run-tests.php Sat Feb 15 22:48:48 2003 @@ -520,26 +520,32 @@ { $data = ""; - $proc = proc_open($commandline, array(1 => array('pipe', 'w')), $pipes); + $proc = proc_open($commandline, array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ), $pipes); if (!$proc) return false; + fclose($pipes[0]); + while (true) { /* hide errors from interrupted syscalls */ $r = $pipes; $w = null; $e = null; - $n = stream_select($r, $w, $e, 60); + $n = @stream_select($r, $w, $e, 60); if ($n == 0) { /* timed out */ $data .= "\n ** ERROR: process timed out **\n"; proc_terminate($proc); return $data; - } else if ($n) { - $line = fgets($pipes[1]); - if ($line === false) { + } else if ($n > 0) { + $line = fread($pipes[1], 8192); + if (strlen($line) == 0) { /* EOF */ break; } Index: php4/win32/php4dllts.dsp diff -u php4/win32/php4dllts.dsp:1.101 php4/win32/php4dllts.dsp:1.102 --- php4/win32/php4dllts.dsp:1.101 Mon Jan 27 19:32:15 2003 +++ php4/win32/php4dllts.dsp Sat Feb 15 22:48:48 2003 @@ -55,7 +55,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 /dll /debug /machine:I386 /nodefaultlib:"libcmt" /out:"..\Debug_TS\php4ts_debug.dll" /pdbtype:sept /libpath:"..\TSRM\Debug_TS" /libpath:"..\Zend\Debug_TS" /libpath:"..\..\bindlib_w32\Debug" /libpath:"..\ext\mysql\libmysql\Debug_TS" /libpath:"Debug_TS" /libpath:"..\..\zlib\Debug" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib ws2_32.lib winspool.lib comdlg32.lib +advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib +ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 +/dll /debug /machine:I386 /nodefaultlib:"libcmt" /out:"..\Debug_TS\php4ts_debug.dll" +/pdbtype:sept /libpath:"..\TSRM\Debug_TS" /libpath:"..\Zend\Debug_TS" +/libpath:"..\..\bindlib_w32\Debug" /libpath:"..\ext\mysql\libmysql\Debug_TS" +/libpath:"Debug_TS" /libpath:"..\..\zlib\Debug" !ELSEIF "$(CFG)" == "php4dllts - Win32 Release_TS" @@ -81,7 +81,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 /dll /machine:I386 /nodefaultlib:"libcmt" /out:"..\Release_TS\php4ts.dll" /libpath:"..\TSRM\Release_TS" /libpath:"..\Zend\Release_TS" /libpath:"..\..\bindlib_w32\Release" /libpath:"..\ext\mysql\libmysql\Release_TS" /libpath:"Release_TS" /libpath:"..\..\zlib\Release" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib ws2_32.lib winspool.lib comdlg32.lib +advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib +ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 +/dll /machine:I386 /nodefaultlib:"libcmt" /out:"..\Release_TS\php4ts.dll" +/libpath:"..\TSRM\Release_TS" /libpath:"..\Zend\Release_TS" +/libpath:"..\..\bindlib_w32\Release" /libpath:"..\ext\mysql\libmysql\Release_TS" +/libpath:"Release_TS" /libpath:"..\..\zlib\Release" !ELSEIF "$(CFG)" == "php4dllts - Win32 Release_TS_inline" @@ -108,7 +108,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib /nologo /dll /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /out:"Release_TS/php4ts.dll" /libpath:"TSRM\Release_TS" /libpath:"Zend\Release_TS" /libpath:"..\bindlib_w32\Release" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 /dll /machine:I386 /nodefaultlib:"libcmt" /out:"..\Release_TS_inline\php4ts.dll" /libpath:"..\TSRM\Release_TS_inline" /libpath:"..\Zend\Release_TS_inline" /libpath:"..\..\bindlib_w32\Release" /libpath:"..\ext\mysql\libmysql\Release_TS_inline" /libpath:"Release_TS_Inline" /libpath:"..\..\zlib\Release" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib ws2_32.lib winspool.lib comdlg32.lib +advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib +ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 +/dll /machine:I386 /nodefaultlib:"libcmt" /out:"..\Release_TS_inline\php4ts.dll" +/libpath:"..\TSRM\Release_TS_inline" /libpath:"..\Zend\Release_TS_inline" +/libpath:"..\..\bindlib_w32\Release" +/libpath:"..\ext\mysql\libmysql\Release_TS_inline" /libpath:"Release_TS_Inline" +/libpath:"..\..\zlib\Release" !ELSEIF "$(CFG)" == "php4dllts - Win32 Release_TSDbg" @@ -135,7 +135,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib libmysql.lib /nologo /version:4.0 /dll /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /out:"..\Release_TS\php4ts.dll" /libpath:"..\TSRM\Release_TS" /libpath:"..\Zend\Release_TS" /libpath:"..\..\bindlib_w32\Release" /libpath:"..\ext\mysql\libmysql\Release_TS" /libpath:"Release_TS" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 /dll /debug /machine:I386 /nodefaultlib:"libcmt" /out:"..\Release_TSDbg\php4ts.dll" /libpath:"..\TSRM\Release_TSDbg" /libpath:"..\Zend\Release_TSDbg" /libpath:"..\..\bindlib_w32\Release" /libpath:"..\ext\mysql\libmysql\Release_TSDbg" /libpath:"Release_TSDbg" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib ws2_32.lib winspool.lib comdlg32.lib +advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib +ZendTS.lib TSRM.lib resolv.lib libmysql.lib zlib.lib Urlmon.lib /nologo /version:4.0 +/dll /debug /machine:I386 /nodefaultlib:"libcmt" /out:"..\Release_TSDbg\php4ts.dll" +/libpath:"..\TSRM\Release_TSDbg" /libpath:"..\Zend\Release_TSDbg" +/libpath:"..\..\bindlib_w32\Release" /libpath:"..\ext\mysql\libmysql\Release_TSDbg" +/libpath:"Release_TSDbg" !ENDIF Index: php4/win32/sendmail.c diff -u php4/win32/sendmail.c:1.53 php4/win32/sendmail.c:1.54 --- php4/win32/sendmail.c:1.53 Tue Jan 7 06:24:17 2003 +++ php4/win32/sendmail.c Sat Feb 15 22:48:49 2003 @@ -17,13 +17,13 @@ * */ -/* $Id: sendmail.c,v 1.53 2003/01/07 11:24:17 edink Exp $ */ +/* $Id: sendmail.c,v 1.54 2003/02/16 03:48:49 wez Exp $ */ #include "php.h" /*php specific */ #include <stdio.h> #include <stdlib.h> #ifndef NETWARE -#include <winsock.h> +#include <winsock2.h> #else /* NETWARE */ #include <netware\sendmail_nw.h> #endif /* NETWARE */ Index: php4/win32/time.h diff -u php4/win32/time.h:1.6 php4/win32/time.h:1.7 --- php4/win32/time.h:1.6 Sun Jun 23 19:22:33 2002 +++ php4/win32/time.h Sat Feb 15 22:48:49 2003 @@ -13,7 +13,7 @@ #define TIME_H /* Include stuff ************************************************************ */ -#include <winsock.h> +#include <winsock2.h> #include <time.h> #include <php.h>
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php