ID: 11855
Updated by: sniper
Reported By: [EMAIL PROTECTED]
Old Status: Open
Status: Bogus
Bug Type: Filesystem function related
Operating System: Linux 2.2
PHP Version: 4.0.5
New Comment:
Yes, fread() is binary safe, fgets() isn't.
Not a bug.
--Jani
Previous Comments:
------------------------------------------------------------------------
[2001-07-03 10:12:27] [EMAIL PROTECTED]
while reading chunks using fgets from a pdf-File, it occured that fgets seems to read
data until a 0x0a occurs but returned the data until the first occurence of 0x00 only.
Because of that, half of the data was lost.
example
Hello0x0d0x0a
XYZ
will be read an returned correctly, the data containing "Hello" and the filepointer on
the XYZ
He0x00llo0x0d0x0a
XYZ
will retrurn data containing "He" with the filepointer still on the XYZ
my code:
$fp=fopen($pdf_file,"r");
while (!feof($fp)) {
$pdf_line="|".strtoupper(fgets($fp,4096));
$filepos+=strlen($pdf_line)-1;
$i=0;
while ($i=strpos($pdf_line,"Needle",$i)) {
if ($i<4000) {
$i+=strlen("Needle");
$retval[]=substr($pdf_line,$i,strlen("Needle"));
} else {
$i++;
}
}
if (strlen($pdf_line)>4000) {
fseek($fp,$filepos-100);
$filepos-=100;
}
}
fclose($fp);
we solved the problem by using fread() instead of fgets(), but felt you still might be
interested.
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=11855&edit=1
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]