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