1--TEST--
2Test fseek(), ftell() & rewind() functions : basic functionality - all w and x modes
3--SKIPIF--
4<?php
5if( substr(PHP_OS, 0, 3) == "WIN" )
6  die("skip.. Not valid for Windows");
7?>
8--FILE--
9<?php
10/* Prototype: int fseek ( resource $handle, int $offset [, int $whence] );
11   Description: Seeks on a file pointer
12
13   Prototype: bool rewind ( resource $handle );
14   Description: Rewind the position of a file pointer
15
16   Prototype: int ftell ( resource $handle );
17   Description: Tells file pointer read/write position
18*/
19
20// include the file.inc for common functions for test
21include ("file.inc");
22
23/* Testing fseek(),ftell(),rewind() functions on all write and create with write modes */
24
25echo "*** Testing fseek(), ftell(), rewind() : basic operations ***\n";
26$file_modes = array( "w","wb","wt","w+","w+b","w+t",
27                     "x","xb","xt","x+","x+b","x+t");
28
29$file_content_types = array("text_with_new_line","alphanumeric");
30
31$whence_set = array(SEEK_SET,SEEK_CUR,SEEK_END);
32$whence_string = array("SEEK_SET", "SEEK_CUR", "SEEK_END");
33
34$filename = dirname(__FILE__)."/fseek_ftell_rewind_basic2.tmp"; // this is name of the file created by create_files()
35
36foreach($file_content_types as $file_content_type){
37  echo "\n-- File having data of type ". $file_content_type ." --\n";
38
39  /* open the file using $files_modes and perform fseek(),ftell() and rewind() on it */
40  foreach($file_modes as $file_mode) {
41    echo "-- File opened in mode ".$file_mode." --\n";
42
43    $file_handle = fopen($filename, $file_mode);
44    if (!$file_handle) {
45      echo "Error: failed to fopen() file: $filename!";
46      exit();
47    }
48    $data_to_be_written="";
49    fill_buffer($data_to_be_written, $file_content_type, 512); //get the data of size 512
50    $data_to_be_written = $data_to_be_written;
51    fwrite($file_handle,$data_to_be_written);
52
53    // set file pointer to 0
54    var_dump( rewind($file_handle) ); // set to beginning of file
55    var_dump( ftell($file_handle) );
56
57    foreach($whence_set as $whence){
58      echo "-- Testing fseek() with whence = $whence_string[$whence] --\n";
59      var_dump( fseek($file_handle, 10, $whence) ); //expecting int(0)
60      var_dump( ftell($file_handle) ); // confirm the file pointer position
61      var_dump( feof($file_handle) ); //ensure that file pointer is not at end
62    } //end of whence loop
63
64    //close the file and check the size
65    fclose($file_handle);
66    var_dump( filesize($filename) );
67
68    delete_file($filename); // delete file with name
69  } //end of file_mode loop
70} //end of File content type loop
71echo "Done\n";
72?>
73--EXPECT--
74*** Testing fseek(), ftell(), rewind() : basic operations ***
75
76-- File having data of type text_with_new_line --
77-- File opened in mode w --
78bool(true)
79int(0)
80-- Testing fseek() with whence = SEEK_SET --
81int(0)
82int(10)
83bool(false)
84-- Testing fseek() with whence = SEEK_CUR --
85int(0)
86int(20)
87bool(false)
88-- Testing fseek() with whence = SEEK_END --
89int(0)
90int(522)
91bool(false)
92int(512)
93-- File opened in mode wb --
94bool(true)
95int(0)
96-- Testing fseek() with whence = SEEK_SET --
97int(0)
98int(10)
99bool(false)
100-- Testing fseek() with whence = SEEK_CUR --
101int(0)
102int(20)
103bool(false)
104-- Testing fseek() with whence = SEEK_END --
105int(0)
106int(522)
107bool(false)
108int(512)
109-- File opened in mode wt --
110bool(true)
111int(0)
112-- Testing fseek() with whence = SEEK_SET --
113int(0)
114int(10)
115bool(false)
116-- Testing fseek() with whence = SEEK_CUR --
117int(0)
118int(20)
119bool(false)
120-- Testing fseek() with whence = SEEK_END --
121int(0)
122int(522)
123bool(false)
124int(512)
125-- File opened in mode w+ --
126bool(true)
127int(0)
128-- Testing fseek() with whence = SEEK_SET --
129int(0)
130int(10)
131bool(false)
132-- Testing fseek() with whence = SEEK_CUR --
133int(0)
134int(20)
135bool(false)
136-- Testing fseek() with whence = SEEK_END --
137int(0)
138int(522)
139bool(false)
140int(512)
141-- File opened in mode w+b --
142bool(true)
143int(0)
144-- Testing fseek() with whence = SEEK_SET --
145int(0)
146int(10)
147bool(false)
148-- Testing fseek() with whence = SEEK_CUR --
149int(0)
150int(20)
151bool(false)
152-- Testing fseek() with whence = SEEK_END --
153int(0)
154int(522)
155bool(false)
156int(512)
157-- File opened in mode w+t --
158bool(true)
159int(0)
160-- Testing fseek() with whence = SEEK_SET --
161int(0)
162int(10)
163bool(false)
164-- Testing fseek() with whence = SEEK_CUR --
165int(0)
166int(20)
167bool(false)
168-- Testing fseek() with whence = SEEK_END --
169int(0)
170int(522)
171bool(false)
172int(512)
173-- File opened in mode x --
174bool(true)
175int(0)
176-- Testing fseek() with whence = SEEK_SET --
177int(0)
178int(10)
179bool(false)
180-- Testing fseek() with whence = SEEK_CUR --
181int(0)
182int(20)
183bool(false)
184-- Testing fseek() with whence = SEEK_END --
185int(0)
186int(522)
187bool(false)
188int(512)
189-- File opened in mode xb --
190bool(true)
191int(0)
192-- Testing fseek() with whence = SEEK_SET --
193int(0)
194int(10)
195bool(false)
196-- Testing fseek() with whence = SEEK_CUR --
197int(0)
198int(20)
199bool(false)
200-- Testing fseek() with whence = SEEK_END --
201int(0)
202int(522)
203bool(false)
204int(512)
205-- File opened in mode xt --
206bool(true)
207int(0)
208-- Testing fseek() with whence = SEEK_SET --
209int(0)
210int(10)
211bool(false)
212-- Testing fseek() with whence = SEEK_CUR --
213int(0)
214int(20)
215bool(false)
216-- Testing fseek() with whence = SEEK_END --
217int(0)
218int(522)
219bool(false)
220int(512)
221-- File opened in mode x+ --
222bool(true)
223int(0)
224-- Testing fseek() with whence = SEEK_SET --
225int(0)
226int(10)
227bool(false)
228-- Testing fseek() with whence = SEEK_CUR --
229int(0)
230int(20)
231bool(false)
232-- Testing fseek() with whence = SEEK_END --
233int(0)
234int(522)
235bool(false)
236int(512)
237-- File opened in mode x+b --
238bool(true)
239int(0)
240-- Testing fseek() with whence = SEEK_SET --
241int(0)
242int(10)
243bool(false)
244-- Testing fseek() with whence = SEEK_CUR --
245int(0)
246int(20)
247bool(false)
248-- Testing fseek() with whence = SEEK_END --
249int(0)
250int(522)
251bool(false)
252int(512)
253-- File opened in mode x+t --
254bool(true)
255int(0)
256-- Testing fseek() with whence = SEEK_SET --
257int(0)
258int(10)
259bool(false)
260-- Testing fseek() with whence = SEEK_CUR --
261int(0)
262int(20)
263bool(false)
264-- Testing fseek() with whence = SEEK_END --
265int(0)
266int(522)
267bool(false)
268int(512)
269
270-- File having data of type alphanumeric --
271-- File opened in mode w --
272bool(true)
273int(0)
274-- Testing fseek() with whence = SEEK_SET --
275int(0)
276int(10)
277bool(false)
278-- Testing fseek() with whence = SEEK_CUR --
279int(0)
280int(20)
281bool(false)
282-- Testing fseek() with whence = SEEK_END --
283int(0)
284int(522)
285bool(false)
286int(512)
287-- File opened in mode wb --
288bool(true)
289int(0)
290-- Testing fseek() with whence = SEEK_SET --
291int(0)
292int(10)
293bool(false)
294-- Testing fseek() with whence = SEEK_CUR --
295int(0)
296int(20)
297bool(false)
298-- Testing fseek() with whence = SEEK_END --
299int(0)
300int(522)
301bool(false)
302int(512)
303-- File opened in mode wt --
304bool(true)
305int(0)
306-- Testing fseek() with whence = SEEK_SET --
307int(0)
308int(10)
309bool(false)
310-- Testing fseek() with whence = SEEK_CUR --
311int(0)
312int(20)
313bool(false)
314-- Testing fseek() with whence = SEEK_END --
315int(0)
316int(522)
317bool(false)
318int(512)
319-- File opened in mode w+ --
320bool(true)
321int(0)
322-- Testing fseek() with whence = SEEK_SET --
323int(0)
324int(10)
325bool(false)
326-- Testing fseek() with whence = SEEK_CUR --
327int(0)
328int(20)
329bool(false)
330-- Testing fseek() with whence = SEEK_END --
331int(0)
332int(522)
333bool(false)
334int(512)
335-- File opened in mode w+b --
336bool(true)
337int(0)
338-- Testing fseek() with whence = SEEK_SET --
339int(0)
340int(10)
341bool(false)
342-- Testing fseek() with whence = SEEK_CUR --
343int(0)
344int(20)
345bool(false)
346-- Testing fseek() with whence = SEEK_END --
347int(0)
348int(522)
349bool(false)
350int(512)
351-- File opened in mode w+t --
352bool(true)
353int(0)
354-- Testing fseek() with whence = SEEK_SET --
355int(0)
356int(10)
357bool(false)
358-- Testing fseek() with whence = SEEK_CUR --
359int(0)
360int(20)
361bool(false)
362-- Testing fseek() with whence = SEEK_END --
363int(0)
364int(522)
365bool(false)
366int(512)
367-- File opened in mode x --
368bool(true)
369int(0)
370-- Testing fseek() with whence = SEEK_SET --
371int(0)
372int(10)
373bool(false)
374-- Testing fseek() with whence = SEEK_CUR --
375int(0)
376int(20)
377bool(false)
378-- Testing fseek() with whence = SEEK_END --
379int(0)
380int(522)
381bool(false)
382int(512)
383-- File opened in mode xb --
384bool(true)
385int(0)
386-- Testing fseek() with whence = SEEK_SET --
387int(0)
388int(10)
389bool(false)
390-- Testing fseek() with whence = SEEK_CUR --
391int(0)
392int(20)
393bool(false)
394-- Testing fseek() with whence = SEEK_END --
395int(0)
396int(522)
397bool(false)
398int(512)
399-- File opened in mode xt --
400bool(true)
401int(0)
402-- Testing fseek() with whence = SEEK_SET --
403int(0)
404int(10)
405bool(false)
406-- Testing fseek() with whence = SEEK_CUR --
407int(0)
408int(20)
409bool(false)
410-- Testing fseek() with whence = SEEK_END --
411int(0)
412int(522)
413bool(false)
414int(512)
415-- File opened in mode x+ --
416bool(true)
417int(0)
418-- Testing fseek() with whence = SEEK_SET --
419int(0)
420int(10)
421bool(false)
422-- Testing fseek() with whence = SEEK_CUR --
423int(0)
424int(20)
425bool(false)
426-- Testing fseek() with whence = SEEK_END --
427int(0)
428int(522)
429bool(false)
430int(512)
431-- File opened in mode x+b --
432bool(true)
433int(0)
434-- Testing fseek() with whence = SEEK_SET --
435int(0)
436int(10)
437bool(false)
438-- Testing fseek() with whence = SEEK_CUR --
439int(0)
440int(20)
441bool(false)
442-- Testing fseek() with whence = SEEK_END --
443int(0)
444int(522)
445bool(false)
446int(512)
447-- File opened in mode x+t --
448bool(true)
449int(0)
450-- Testing fseek() with whence = SEEK_SET --
451int(0)
452int(10)
453bool(false)
454-- Testing fseek() with whence = SEEK_CUR --
455int(0)
456int(20)
457bool(false)
458-- Testing fseek() with whence = SEEK_END --
459int(0)
460int(522)
461bool(false)
462int(512)
463Done
464