#32889 [Opn->Csd]: ftruncate doesn't move the file pointer

From: Date: Fri, 29 Apr 2005 14:18:33 +0000
Subject: #32889 [Opn->Csd]: ftruncate doesn't move the file pointer
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969368107@lists.php.net to get a copy of this message
ID: 32889 Updated by: vrana@php.net Reported By: techtonik@php.net -Status: Open +Status: Closed Bug Type: Documentation problem PHP Version: Irrelevant New Comment: This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. "The file pointer is changed only in append mode. In write mode, additional fseek() call is needed." Previous Comments: ------------------------------------------------------------------------ [2005-04-29 13:04:11] techtonik@php.net Something like "Warning: Truncate doesn't change position of the file pointer. Adjust the pointer with fseek to write to the end of the file after truncate operation in modes other than "a" and "a+"." ? Examples: <?php $fh = fopen("file.txt","w+"); fwrite($fh, "newfile"); // file contains string 'newfile' ftruncate($fh, 3); fseek($fh, 0, SEEK_END); fwrite($fh, "contents"); // file contains 'newcontents' fclose($fh); ?> <?php $fh = fopen("file.txt","w+"); fwrite($fh, "newfile"); // file contains string 'newfile' ftruncate($fh, 3); fwrite($fh, "contents"); // file contains 'new contents' fclose($fh); ?> ------------------------------------------------------------------------ [2005-04-29 12:22:17] tony2001@php.net "The file pointer is not changed." (c) man ftruncate ------------------------------------------------------------------------ [2005-04-29 12:12:57] techtonik@php.net On the second thought it doesn't seem like a feature. ------------------------------------------------------------------------ [2005-04-29 11:36:13] techtonik@php.net Description: ------------ Note or warning here? http://www.php.net/manual/en/function.ftruncate.php Reproduce code: --------------- <?php // truncate doesn't move the file pointer to the end of the file $flog = fopen("text.txt", "w+"); fwrite($flog, "veeery veeery long string"); fseek($flog, -2, SEEK_END); ftruncate($flog, 6); fwrite($flog, "shortstr"); fclose($flog); ?> Expected result: ---------------- 0000000000: 76 65 65 65 72 79 20 73 &#9474; 68 6F 72 74 73 74 72 veeery shortstr Actual result: -------------- 0000000000: 76 65 65 65 72 79 20 00 &#9474; 00 00 00 00 00 00 00 00 veeery 0000000010: 00 00 00 00 00 00 00 73 &#9474; 68 6F 72 74 73 74 72 shortstr ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=32889&edit=1

« previous php.doc (#969368107) next »