1--TEST--
2Stream: RFC2397 getting meta data
3--INI--
4allow_url_fopen=1
5--FILE--
6<?php
7
8$streams = array(
9	'data://,',
10	'data://',
11	'data://;base64,',
12	'data://;base64',
13	'data://foo,',
14	'data://foo=bar,',
15	'data://text/plain,',
16	'data://text/plain;foo,',
17	'data://text/plain;foo=bar,',
18	'data://text/plain;foo=bar;bla,',
19	'data://text/plain;foo=bar;base64,',
20	'data://text/plain;foo=bar;bar=baz',
21	'data://text/plain;foo=bar;bar=baz,',
22	);
23
24foreach($streams as $stream)
25{
26	$stream = fopen($stream, 'r');
27	$meta = @stream_get_meta_data($stream);
28	var_dump($meta);
29	var_dump(isset($meta['foo']) ? $meta['foo'] : null);
30}
31
32?>
33===DONE===
34<?php exit(0); ?>
35--EXPECTF--
36array(7) {
37  ["wrapper_type"]=>
38  string(7) "RFC2397"
39  ["stream_type"]=>
40  string(7) "RFC2397"
41  ["mode"]=>
42  string(1) "r"
43  ["unread_bytes"]=>
44  int(0)
45  ["seekable"]=>
46  bool(true)
47  ["uri"]=>
48  string(8) "data://,"
49  ["base64"]=>
50  bool(false)
51}
52NULL
53
54Warning: fopen(data://): failed to open stream: rfc2397: no comma in URL in %sstream_rfc2397_002.php on line %d
55NULL
56NULL
57array(7) {
58  ["wrapper_type"]=>
59  string(7) "RFC2397"
60  ["stream_type"]=>
61  string(7) "RFC2397"
62  ["mode"]=>
63  string(1) "r"
64  ["unread_bytes"]=>
65  int(0)
66  ["seekable"]=>
67  bool(true)
68  ["uri"]=>
69  string(15) "data://;base64,"
70  ["base64"]=>
71  bool(true)
72}
73NULL
74
75Warning: fopen(data://;base64): failed to open stream: rfc2397: no comma in URL in %sstream_rfc2397_002.php on line %d
76NULL
77NULL
78
79Warning: fopen(data://foo,): failed to open stream: rfc2397: illegal media type in %sstream_rfc2397_002.php on line %d
80NULL
81NULL
82
83Warning: fopen(data://foo=bar,): failed to open stream: rfc2397: illegal media type in %sstream_rfc2397_002.php on line %d
84NULL
85NULL
86array(8) {
87  ["wrapper_type"]=>
88  string(7) "RFC2397"
89  ["stream_type"]=>
90  string(7) "RFC2397"
91  ["mode"]=>
92  string(1) "r"
93  ["unread_bytes"]=>
94  int(0)
95  ["seekable"]=>
96  bool(true)
97  ["uri"]=>
98  string(18) "data://text/plain,"
99  ["mediatype"]=>
100  string(10) "text/plain"
101  ["base64"]=>
102  bool(false)
103}
104NULL
105
106Warning: fopen(data://text/plain;foo,): failed to open stream: rfc2397: illegal parameter in %sstream_rfc2397_002.php on line %d
107NULL
108NULL
109array(9) {
110  ["wrapper_type"]=>
111  string(7) "RFC2397"
112  ["stream_type"]=>
113  string(7) "RFC2397"
114  ["mode"]=>
115  string(1) "r"
116  ["unread_bytes"]=>
117  int(0)
118  ["seekable"]=>
119  bool(true)
120  ["uri"]=>
121  string(26) "data://text/plain;foo=bar,"
122  ["mediatype"]=>
123  string(10) "text/plain"
124  ["foo"]=>
125  string(3) "bar"
126  ["base64"]=>
127  bool(false)
128}
129string(3) "bar"
130
131Warning: fopen(data://text/plain;foo=bar;bla,): failed to open stream: rfc2397: illegal parameter in %sstream_rfc2397_002.php on line %d
132NULL
133NULL
134array(9) {
135  ["wrapper_type"]=>
136  string(7) "RFC2397"
137  ["stream_type"]=>
138  string(7) "RFC2397"
139  ["mode"]=>
140  string(1) "r"
141  ["unread_bytes"]=>
142  int(0)
143  ["seekable"]=>
144  bool(true)
145  ["uri"]=>
146  string(33) "data://text/plain;foo=bar;base64,"
147  ["mediatype"]=>
148  string(10) "text/plain"
149  ["foo"]=>
150  string(3) "bar"
151  ["base64"]=>
152  bool(true)
153}
154string(3) "bar"
155
156Warning: fopen(data://text/plain;foo=bar;bar=baz): failed to open stream: rfc2397: no comma in URL in %sstream_rfc2397_002.php on line %d
157NULL
158NULL
159array(10) {
160  ["wrapper_type"]=>
161  string(7) "RFC2397"
162  ["stream_type"]=>
163  string(7) "RFC2397"
164  ["mode"]=>
165  string(1) "r"
166  ["unread_bytes"]=>
167  int(0)
168  ["seekable"]=>
169  bool(true)
170  ["uri"]=>
171  string(34) "data://text/plain;foo=bar;bar=baz,"
172  ["mediatype"]=>
173  string(10) "text/plain"
174  ["foo"]=>
175  string(3) "bar"
176  ["bar"]=>
177  string(3) "baz"
178  ["base64"]=>
179  bool(false)
180}
181string(3) "bar"
182===DONE===
183