ID:               40183
 Updated by:       [EMAIL PROTECTED]
 Reported By:      perrog at gmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Filesystem function related
 Operating System: Mac OS X 10.4
 PHP Version:      5.2.1RC3
 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

The initial position returned is 0 because counting starts 
from the append position (earlier data does not count).


Previous Comments:
------------------------------------------------------------------------

[2007-01-21 07:26:48] perrog at gmail dot com

Description:
------------
Opening a file for appending does not move the file pointer to 
the end of file before the first I/O operation is performed.

That makes ftell() return zero directly after the fopen() 
call.

The workaround, if you need to call ftell() immediately after 
the fopen(), is to use a no-operation I/O call fseek() that 
don't do anything. Thus, the file pointer is updated and 
returns correct position information.

Reproduce code:
---------------
// create or open a file, and write some stuff to it.
$filename = "/path/to/file.txt";
$fp = fopen($filename, "a+");
fwrite($fp, "Sample text");
fclose($fp);

// re-open it and check what ftell() returns
$fp = fopen($filename, "a+");
echo " pre-fseek: " . ftell($fp) . "\n"; // ftell returns 0
fseek($fp, 0, SEEK_END);
echo "post-fseek: " . ftell($fp) . "\n"; // ftell now ok


Expected result:
----------------
The snippet should print the file size of the file:

 pre-fseek: 11
post-fseek: 11

Actual result:
--------------
The snippet should print the correct file size only after the 
first I/O operation:

 pre-fseek: 0
post-fseek: 11


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=40183&edit=1

Reply via email to