From d563495a246e0d4e7ed3cb74ee2e8bcd48e285a3 Mon Sep 17 00:00:00 2001 From: Rob Richards Date: Thu, 11 Nov 2004 13:08:32 +0000 Subject: [PATCH] add support for file://localhost/ support file:/// under windows again --- main/streams/streams.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/main/streams/streams.c b/main/streams/streams.c index 9a071746bc..c1ff46ce6b 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1492,24 +1492,36 @@ PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, char } /* 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) { -- 2.50.1