1--TEST--
2Test fscanf() function: usage variations - octal formats with resource
3--FILE--
4<?php
5
6/* Test fscanf() to scan resource type using different octal format types */
7
8$file_path = __DIR__;
9
10echo "*** Test fscanf(): different octal format types with resource ***\n";
11
12// create a file
13$filename = "$file_path/fscanf_variation29.tmp";
14$file_handle = fopen($filename, "w");
15if($file_handle == false)
16  exit("Error:failed to open file $filename");
17
18
19// resource type variable
20$fp = fopen (__FILE__, "r");
21$dfp = opendir ( __DIR__ );
22
23// array of resource types
24$resource_types = array (
25  $fp,
26  $dfp
27);
28
29$octal_formats = array(  "%o",
30             "%ho", "%lo", "%Lo",
31             " %o", "%o ", "% o",
32             "\t%o", "\n%o", "%4o",
33             "%30o", "%[0-7]", "%*o"
34         );
35
36$counter = 1;
37
38// writing to the file
39foreach($resource_types as $value) {
40  @fprintf($file_handle, "%s", $value);
41  @fprintf($file_handle, "\n");
42}
43// closing the file
44fclose($file_handle);
45
46// opening the file for reading
47$file_handle = fopen($filename, "r");
48if($file_handle == false) {
49  exit("Error:failed to open file $filename");
50}
51
52$counter = 1;
53// reading the values from file using different octal formats
54foreach($octal_formats as $octal_format) {
55  // rewind the file so that for every foreach iteration the file pointer starts from bof
56  rewind($file_handle);
57  echo "\n-- iteration $counter --\n";
58  while( !feof($file_handle) ) {
59    try {
60      var_dump(fscanf($file_handle,$octal_format));
61    } catch (ValueError $exception) {
62      echo $exception->getMessage() . "\n";
63    }
64  }
65  $counter++;
66}
67
68// closing the resources
69fclose($fp);
70closedir($dfp);
71
72echo "\n*** Done ***";
73?>
74--CLEAN--
75<?php
76$file_path = __DIR__;
77$filename = "$file_path/fscanf_variation29.tmp";
78unlink($filename);
79?>
80--EXPECT--
81*** Test fscanf(): different octal format types with resource ***
82
83-- iteration 1 --
84array(1) {
85  [0]=>
86  NULL
87}
88array(1) {
89  [0]=>
90  NULL
91}
92bool(false)
93
94-- iteration 2 --
95array(1) {
96  [0]=>
97  NULL
98}
99array(1) {
100  [0]=>
101  NULL
102}
103bool(false)
104
105-- iteration 3 --
106array(1) {
107  [0]=>
108  NULL
109}
110array(1) {
111  [0]=>
112  NULL
113}
114bool(false)
115
116-- iteration 4 --
117array(1) {
118  [0]=>
119  NULL
120}
121array(1) {
122  [0]=>
123  NULL
124}
125bool(false)
126
127-- iteration 5 --
128array(1) {
129  [0]=>
130  NULL
131}
132array(1) {
133  [0]=>
134  NULL
135}
136bool(false)
137
138-- iteration 6 --
139array(1) {
140  [0]=>
141  NULL
142}
143array(1) {
144  [0]=>
145  NULL
146}
147bool(false)
148
149-- iteration 7 --
150Bad scan conversion character " "
151Bad scan conversion character " "
152bool(false)
153
154-- iteration 8 --
155array(1) {
156  [0]=>
157  NULL
158}
159array(1) {
160  [0]=>
161  NULL
162}
163bool(false)
164
165-- iteration 9 --
166array(1) {
167  [0]=>
168  NULL
169}
170array(1) {
171  [0]=>
172  NULL
173}
174bool(false)
175
176-- iteration 10 --
177array(1) {
178  [0]=>
179  NULL
180}
181array(1) {
182  [0]=>
183  NULL
184}
185bool(false)
186
187-- iteration 11 --
188array(1) {
189  [0]=>
190  NULL
191}
192array(1) {
193  [0]=>
194  NULL
195}
196bool(false)
197
198-- iteration 12 --
199array(1) {
200  [0]=>
201  NULL
202}
203array(1) {
204  [0]=>
205  NULL
206}
207bool(false)
208
209-- iteration 13 --
210array(0) {
211}
212array(0) {
213}
214bool(false)
215
216*** Done ***
217