php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay

| files >> /proc/self/root/proc/self/root/opt/php-7.0.1/ext/standard/tests/file/ |
| files >> //proc/self/root/proc/self/root/opt/php-7.0.1/ext/standard/tests/file/bug27508.phpt |
--TEST--
Bug #27508 (userspace wrappers have bogus eof indicator)
--FILE--
<?php # vim:ft=php
class FileStream {
public $fp;
function stream_open($path, $mode, $options, &$opened_path)
{
$url = urldecode(substr($path, 9));
$this->fp = fopen($url, $mode);
return true;
}
function stream_read($count)
{
return fread($this->fp, $count);
}
function stream_write($data)
{
return fwrite($this->fp, $data);
}
function stream_tell()
{
return ftell($this->fp);
}
function stream_eof()
{
if (!$this->fp) {
return true;
}
return feof($this->fp);
}
function stream_seek($offset, $whence)
{
return fseek($this->fp, $offset, $whence) == 0 ? true : false;
}
}
stream_wrapper_register("myFile", "FileStream")
or die("Failed to register protocol");
$tmp_dir = __DIR__;
$tn = (binary) tempnam($tmp_dir, 'foo');
if (!$tn) {
die("tempnam failed");
}
$fp = fopen("myFile://" . urlencode($tn), "w+");
if (!$fp) {
die("fopen failed");
}
fwrite($fp, b"line1\n");
fwrite($fp, b"line2\n");
fwrite($fp, b"line3\n");
debug_zval_dump(feof($fp));
rewind($fp);
echo ftell($fp) . "\n";
debug_zval_dump(feof($fp));
while ($fp && !feof($fp)) {
echo fgets($fp);
}
fclose($fp);
unlink($tn);
?>
--EXPECT--
bool(false)
0
bool(false)
line1
line2
line3
y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`