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