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