]> granicus.if.org Git - php/commitdiff
- Add strict compliant RFC2397 support (no //)
authorMarcus Boerger <helly@php.net>
Sun, 14 May 2006 18:35:40 +0000 (18:35 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 14 May 2006 18:35:40 +0000 (18:35 +0000)
ext/standard/tests/file/stream_rfc2397_004.phpt [new file with mode: 0755]
ext/standard/tests/file/stream_rfc2397_005.phpt [new file with mode: 0755]
main/streams/streams.c

diff --git a/ext/standard/tests/file/stream_rfc2397_004.phpt b/ext/standard/tests/file/stream_rfc2397_004.phpt
new file mode 100755 (executable)
index 0000000..ac71564
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+Stream: RFC2397 Mozilla tests
+--FILE--
+<?php
+
+$streams = array(
+       'data://,;test',
+       'data://text/plain,test',
+       'data://text/plain;charset=US-ASCII,test',
+       'data://;charset=UTF-8,Hello',
+       'data://text/plain;charset=UTF-8,Hello',
+       'data://,a,b',
+       );
+
+foreach($streams as $stream)
+{
+       var_dump(@file_get_contents($stream));
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+string(5) ";test"
+string(4) "test"
+string(4) "test"
+bool(false)
+string(5) "Hello"
+string(3) "a,b"
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/file/stream_rfc2397_005.phpt b/ext/standard/tests/file/stream_rfc2397_005.phpt
new file mode 100755 (executable)
index 0000000..892af43
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+Stream: RFC2397 without //
+--FILE--
+<?php
+
+$streams = array(
+       'data:,A%20brief%20note',
+       'data:application/vnd-xxx-query,select_vcount,fcol_from_fieldtable/local',
+       'data:;base64,Zm9vYmFyIGZvb2Jhcg==',
+       'data:,;test',
+       'data:text/plain,test',
+       'data:text/plain;charset=US-ASCII,test',
+       'data:;charset=UTF-8,Hello',
+       'data:text/plain;charset=UTF-8,Hello',
+       'data:,a,b',
+       );
+
+foreach($streams as $stream)
+{
+       var_dump(@file_get_contents($stream));
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+string(12) "A brief note"
+string(40) "select_vcount,fcol_from_fieldtable/local"
+string(13) "foobar foobar"
+string(5) ";test"
+string(4) "test"
+string(4) "test"
+bool(false)
+string(5) "Hello"
+string(3) "a,b"
+===DONE===
\ No newline at end of file
index d5210659cec6526aee92fd5e4e1d8aac1264fdb2..e22b0d13bbbf98bb17ee7a96748b8cb12da13192 100755 (executable)
@@ -1982,9 +1982,9 @@ PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, char
                n++;
        }
 
-       if ((*p == ':') && (n > 1) && !strncmp("://", p, 3)) {
+       if ((*p == ':') && (n > 1) && (!strncmp("//", p+1, 2) || !memcmp("data", path, 4))) {
                protocol = path;
-       } else if (strncasecmp(path, "zlib:", 5) == 0) {
+       } else if (n == 5 && strncasecmp(path, "zlib:", 5) == 0) {
                /* BC with older php scripts and zlib wrapper */
                protocol = "compress.zlib";
                n = 13;