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

Reply via email to