#32889 [Fbk->Opn]: ftruncate doesn't move the file pointer
| From: | techtonik@php.net | Date: | Fri, 29 Apr 2005 11:04:12 +0000 |
| Subject: | #32889 [Fbk->Opn]: ftruncate doesn't move the file pointer | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969368097@lists.php.net to get a copy of this message | ||
ID: 32889
User updated by: techtonik@php.net
Reported By: techtonik@php.net
-Status: Feedback
+Status: Open
Bug Type: Documentation problem
PHP Version: Irrelevant
New Comment:
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);
?>
Previous Comments:
------------------------------------------------------------------------
[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 │ 68 6F 72 74 73 74 72
veeery shortstr
Actual result:
--------------
0000000000: 76 65 65 65 72 79 20 00 │ 00 00 00 00 00 00 00 00
veeery
0000000010: 00 00 00 00 00 00 00 73 │ 68 6F 72 74 73 74 72
shortstr
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32889&edit=1