Annotation of embedaddon/php/ext/standard/tests/file/bug27508.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Bug #27508 (userspace wrappers have bogus eof indicator)
        !             3: --FILE--
        !             4: <?php # vim:ft=php
        !             5: class FileStream {
        !             6:     public $fp;
        !             7:    
        !             8:     function stream_open($path, $mode, $options, &$opened_path) 
        !             9:     {
        !            10:         $url = urldecode(substr($path, 9));
        !            11:         $this->fp = fopen($url, $mode);
        !            12: 
        !            13:         return true;
        !            14:     }
        !            15: 
        !            16:     function stream_read($count) 
        !            17:     {
        !            18:         return fread($this->fp, $count);
        !            19:     }
        !            20: 
        !            21:     function stream_write($data) 
        !            22:     {
        !            23:         return fwrite($this->fp, $data);
        !            24:     }
        !            25: 
        !            26:     function stream_tell() 
        !            27:     {
        !            28:         return ftell($this->fp);
        !            29:     }
        !            30: 
        !            31:     function stream_eof() 
        !            32:     {
        !            33:         if (!$this->fp) {
        !            34:             return true;
        !            35:         }
        !            36:         return feof($this->fp);
        !            37:     }
        !            38: 
        !            39:     function stream_seek($offset, $whence) 
        !            40:     {
        !            41:         return fseek($this->fp, $offset, $whence) == 0 ? true : false;
        !            42:     }
        !            43: }
        !            44: 
        !            45: stream_wrapper_register("myFile", "FileStream")
        !            46:     or die("Failed to register protocol");
        !            47: 
        !            48: $tmp_dir = __DIR__;
        !            49: $tn = (binary) tempnam($tmp_dir, 'foo');
        !            50: if (!$tn) {
        !            51:   die("tempnam failed");
        !            52: }
        !            53: 
        !            54: $fp = fopen("myFile://" . urlencode($tn), "w+");
        !            55: if (!$fp) {
        !            56:   die("fopen failed");
        !            57: }
        !            58: 
        !            59: fwrite($fp, b"line1\n");
        !            60: fwrite($fp, b"line2\n");
        !            61: fwrite($fp, b"line3\n");
        !            62: 
        !            63: debug_zval_dump(feof($fp));
        !            64: rewind($fp);
        !            65: echo ftell($fp) . "\n";
        !            66: debug_zval_dump(feof($fp));
        !            67: while ($fp && !feof($fp)) {
        !            68:     echo fgets($fp);
        !            69: }
        !            70: fclose($fp);
        !            71: 
        !            72: unlink($tn);
        !            73: ?>
        !            74: --EXPECT--
        !            75: bool(false) refcount(1)
        !            76: 0
        !            77: bool(false) refcount(1)
        !            78: line1
        !            79: line2
        !            80: line3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>