Annotation of embedaddon/php/ext/standard/tests/file/bug27508.phpt, revision 1.1.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>