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

Reply via email to