#22682 [Opn->Ver]: Proplems with fread(), ftell() and fseek() and CRLF newlines

From: Date: Sun, 11 May 2003 13:28:04 +0000
Subject: #22682 [Opn->Ver]: Proplems with fread(), ftell() and fseek() and CRLF newlines
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-39444@lists.php.net to get a copy of this message
 ID:               22682
 Updated by:       moriyoshi@php.net
 Reported By:      fbeyer at clickhand dot de
-Status:           Open
+Status:           Verified
 Bug Type:         Filesystem function related
 Operating System: Windows XP
 PHP Version:      4CVS-2003-04-28 (stable)
 New Comment:

As Wez pointed out above, this is a generic __setmode() issue.
status: open => verified



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

[2003-04-28 12:31:38] wez@php.net

Related to Bug #22497

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

[2003-04-28 09:18:51] fbeyer at clickhand dot de

No, unfortunately, the result is the same.

But I've found out that the problem only occurs if PHP is run as an
apache module (I'm currently using 1.3.20). The CGI executable works as
expected - this is why I mentioned that the bug doesn't occur in the
PHP5 snapshot since I've installed it using CGI.

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

[2003-04-23 05:00:26] sniper@php.net

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip



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

[2003-03-13 11:41:40] fbeyer at clickhand dot de

I have found this bug in 4.3.0, searched matching bug reports and they
said the bug is fixed in the latest stable CVS snap. I have downloaded
and installed today's latest version, the fix is mentioned in the
news.txt, but the bug is still there.

Here are my test files for a short reproducing script:

file test.txt:
(saved in dos format, ie. newlines are CRLF/\r\n):
------------------------------
This is a test file
in win32 / dos format
ie. lines end with CRLF
resp. \r\n
------------------------------

file test.php
------------------------------
<?php
$fp = fopen('test.txt', 'r');

$contents = fread($fp, 30);
fseek($fp, ftell($fp));
$contents .= fread($fp, 30);

echo $contents;

echo "\n\n";

var_dump(strpos($contents, "\r"));
?>
------------------------------

Output:
------------------------------
This is a test file
in win32 // dos format
ie. lines end wit

bool(false)
------------------------------

It can be seen that fseek() or ftell() don't work as expected: the '/'
character is read twice.

Furthermore, fread() doesn't return \r characters. I also have tested
this for fgetc() - \r is not read.

A strange thing is that this bug doesn't occurr in the newest php5/ze2
snapshot.

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


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



Thread (14 messages)

« previous php.bugs (#39444) next »