From: Shane Caraveo Date: Sun, 19 Oct 2003 20:59:12 +0000 (+0000) Subject: A simpler patch to add file uri support X-Git-Tag: RELEASE_1_3b3~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a41429472dbd9e3423cda24937f69b0ae744668;p=php A simpler patch to add file uri support --- diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c index 1f060ec666..5286f4fcb2 100644 --- a/main/streams/plain_wrapper.c +++ b/main/streams/plain_wrapper.c @@ -882,6 +882,16 @@ static php_stream *php_plain_files_dir_opener(php_stream_wrapper *wrapper, char static php_stream *php_plain_files_stream_opener(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC) { + char *filename = path; + if (!strncasecmp(filename, "file:", sizeof("file:")-1)) { + filename += 6; + while (*(++filename)=='/'); +#ifdef PHP_WIN32 + if (*(filename + 1) != ':') +#endif + filename--; + } + if ((options & USE_PATH) && PG(include_path) != NULL) { return php_stream_fopen_with_path_rel(path, mode, PG(include_path), opened_path, options); } diff --git a/main/streams/streams.c b/main/streams/streams.c index 49a34cdcdb..d7579378c1 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1415,14 +1415,20 @@ 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)) { - if (protocol && path[n+1] == '/' && path[n+2] == '/') { + if (protocol && path[n+1] == '/' && path[n+2] == '/' && path[n+3] != '/') { if (options & REPORT_ERRORS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "remote host file access not supported, %s", path); } 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) != ':') +#endif + *path_for_open--; } /* fall back on regular file access */