rrichards               Thu Nov 11 08:08:34 2004 EDT

  Modified files:              
    /php-src/main/streams       streams.c 
  Log:
  add support for file://localhost/
  support file:/// under windows again
  
http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.68&r2=1.69&ty=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.68 php-src/main/streams/streams.c:1.69
--- php-src/main/streams/streams.c:1.68 Mon Oct 11 14:31:47 2004
+++ php-src/main/streams/streams.c      Thu Nov 11 08:08:32 2004
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: streams.c,v 1.68 2004/10/11 18:31:47 iliaa Exp $ */
+/* $Id: streams.c,v 1.69 2004/11/11 13:08:32 rrichards Exp $ */
 
 #define _GNU_SOURCE
 #include "php.h"
@@ -1492,24 +1492,36 @@
        }
        /* TODO: curl based streams probably support file:// properly */
        if (!protocol || !strncasecmp(protocol, "file", n))     {
-#ifdef PHP_WIN32               
-               if (protocol && path[n+1] == '/' && path[n+2] == '/' && 
path[n+4] != ':')       {
+               if (protocol) {
+                       int localhost = 0;
+
+                       if (!strncasecmp(path, "file://localhost/", 17)) {
+                               localhost = 1;
+                       }
+
+#ifdef PHP_WIN32
+                       if (localhost == 0 && path[n+3] != '\0' && path[n+3] != 
'/' && path[n+4] != ':')        {
 #else
-               if (protocol && path[n+1] == '/' && path[n+2] == '/' && 
path[n+3] != '/')       {
+                       if (localhost == 0 && path[n+3] != '/') {
 #endif
-                       if (options & REPORT_ERRORS) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"remote host file access not supported, %s", path);
+                               if (options & REPORT_ERRORS) {
+                                       php_error_docref(NULL TSRMLS_CC, 
E_WARNING, "remote host file access not supported, %s", path);
+                               }
+                               return NULL;
                        }
-                       return NULL;
-               }
-               if (protocol && path_for_open) {
-                       /* skip past protocol and :/, but handle windows 
correctly */
-                       *path_for_open = (char*)path + n + 1;
-                       while (*(++*path_for_open)=='/');
+
+                       if (path_for_open) {
+                               /* skip past protocol and :/, but handle 
windows correctly */
+                               *path_for_open = (char*)path + n + 1;
+                               if (localhost == 1) {
+                                       (*path_for_open) += 11;
+                               }
+                               while (*(++*path_for_open)=='/');
 #ifdef PHP_WIN32
-                       if (*(*path_for_open + 1) != ':')
+                               if (*(*path_for_open + 1) != ':')
 #endif
-                               (*path_for_open)--;
+                                       (*path_for_open)--;
+                       }
                }
 
                if (options & STREAM_LOCATE_WRAPPERS_ONLY) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to