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

From: Date: Fri, 29 Apr 2005 16:31:52 +0000
Subject: #32889 [Csd]: ftruncate doesn't move the file pointer
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969368114@lists.php.net to get a copy of this message
ID: 32889 Updated by: wez@php.net Reported By: techtonik@php.net Status: Closed Bug Type: Documentation problem PHP Version: Irrelevant New Comment: The file pointer is not changed at all by PHP when you truncate. This is consistent with ANSI ftruncate (man ftruncate). You are responsible for seeking explicitly if you require it. Previous Comments: ------------------------------------------------------------------------ [2005-04-29 16:18:32] vrana@php.net 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." ------------------------------------------------------------------------ [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 (#969368114) next »