cellog Sat Oct 11 22:21:07 2008 UTC Modified files: /php-src/ext/phar stream.c /php-src/ext/phar/tests/tar links6.phpt Log: MFB: fix links for fseek as well http://cvs.php.net/viewvc.cgi/php-src/ext/phar/stream.c?r1=1.37&r2=1.38&diff_format=u Index: php-src/ext/phar/stream.c diff -u php-src/ext/phar/stream.c:1.37 php-src/ext/phar/stream.c:1.38 --- php-src/ext/phar/stream.c:1.37 Sat Oct 11 22:12:18 2008 +++ php-src/ext/phar/stream.c Sat Oct 11 22:21:07 2008 @@ -389,12 +389,19 @@ static int phar_stream_seek(php_stream *stream, off_t offset, int whence, off_t *newoffset TSRMLS_DC) /* {{{ */ { phar_entry_data *data = (phar_entry_data *)stream->abstract; - + phar_entry_info *entry; int res; off_t temp; + + if (data->internal_file->link) { + entry = phar_get_link_source(data->internal_file TSRMLS_CC); + } else { + entry = data->internal_file; + } + switch (whence) { case SEEK_END : - temp = data->zero + data->internal_file->uncompressed_filesize + offset; + temp = data->zero + entry->uncompressed_filesize + offset; break; case SEEK_CUR : temp = data->zero + data->position + offset; @@ -403,7 +410,7 @@ temp = data->zero + offset; break; } - if (temp > data->zero + (off_t) data->internal_file->uncompressed_filesize) { + if (temp > data->zero + (off_t) entry->uncompressed_filesize) { *newoffset = -1; return -1; } http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/tar/links6.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/phar/tests/tar/links6.phpt diff -u php-src/ext/phar/tests/tar/links6.phpt:1.2 php-src/ext/phar/tests/tar/links6.phpt:1.3 --- php-src/ext/phar/tests/tar/links6.phpt:1.2 Sat Oct 11 22:12:18 2008 +++ php-src/ext/phar/tests/tar/links6.phpt Sat Oct 11 22:21:07 2008 @@ -9,6 +9,10 @@ echo file_get_contents('phar://' . dirname(__FILE__) . '/files/links.phar.tar/link2'); echo file_get_contents('phar://' . dirname(__FILE__) . '/files/links.phar.tar/link1'); echo file_get_contents('phar://' . dirname(__FILE__) . '/files/links.phar.tar/testit.txt'); + +$a = fopen('phar://' . dirname(__FILE__) . '/files/links.phar.tar/link2', 'r'); +fseek($a, 3); +echo fread($a, 10); ?> ===DONE=== --EXPECT-- @@ -18,4 +22,6 @@ hi there +there + ===DONE=== \ No newline at end of file
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php