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