mirror of
https://github.com/php/php-src.git
synced 2026-03-27 01:32:22 +01:00
add support for file://localhost/
support file:/// under windows again
This commit is contained in:
@@ -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] != ':') {
|
||||
#else
|
||||
if (protocol && path[n+1] == '/' && path[n+2] == '/' && 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 (protocol) {
|
||||
int localhost = 0;
|
||||
|
||||
if (!strncasecmp(path, "file://localhost/", 17)) {
|
||||
localhost = 1;
|
||||
}
|
||||
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)=='/');
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
if (*(*path_for_open + 1) != ':')
|
||||
if (localhost == 0 && path[n+3] != '\0' && path[n+3] != '/' && path[n+4] != ':') {
|
||||
#else
|
||||
if (localhost == 0 && path[n+3] != '/') {
|
||||
#endif
|
||||
(*path_for_open)--;
|
||||
if (options & REPORT_ERRORS) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "remote host file access not supported, %s", path);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
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) != ':')
|
||||
#endif
|
||||
(*path_for_open)--;
|
||||
}
|
||||
}
|
||||
|
||||
if (options & STREAM_LOCATE_WRAPPERS_ONLY) {
|
||||
|
||||
Reference in New Issue
Block a user