]> granicus.if.org Git - php/commitdiff
fix inode calculation, we need fname to be set for phar/tar formats prior to manifest...
authorGreg Beaver <cellog@php.net>
Sun, 22 Jun 2008 00:50:32 +0000 (00:50 +0000)
committerGreg Beaver <cellog@php.net>
Sun, 22 Jun 2008 00:50:32 +0000 (00:50 +0000)
ext/phar/cgidebug
ext/phar/phar.c
ext/phar/phar.phar
ext/phar/tar.c

index f356f9b104b7222b68852a20a1d68e14107e976c..cc3d6b41e675471ce7bffc95ed2e66f2f769049e 100755 (executable)
@@ -1,11 +1,11 @@
 #!/bin/sh
-export SCRIPT_NAME=/front.phar.php
-export PATH_INFO=/index.php
-export SCRIPT_FILENAME=/home/cellog/workspace/php5/ext/phar/tests/front.phar.php
-export PATH_TRANSLATED=/home/cellog/workspace/php5/ext/phar/tests/front.phar.php
+export SCRIPT_NAME=/frontcontroller9.php
+export PATH_INFO=/hi
+export SCRIPT_FILENAME=/home/cellog/workspace/php5/ext/phar/tests/cache_list/frontcontroller9.php
+export PATH_TRANSLATED=/home/cellog/workspace/php5/ext/phar/tests/cache_list/frontcontroller9.php
 export REDIRECT_STATUS=1
 export REQUEST_METHOD=GET
-export REQUEST_URI=/front.phar.php/index.php
-cd /home/cellog/workspace/php5/
-ddd sapi/cgi/php-cgi &
+export REQUEST_URI=/frontcontroller9.php/hi
+cd /home/cellog/workspace/php5/ext/phar/tests/cache_list
+ddd ../../../../sapi/cgi/php-cgi &
 cd /home/cellog/workspace/php5/ext/phar
index 34af019dc2f8845238fce3da4533b944df34e868..4de7904354b74ca7d4c02b36d1f17a1483949af3 100644 (file)
@@ -986,6 +986,11 @@ static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char
                zend_get_hash_value, NULL, (zend_bool)mydata->is_persistent);
        zend_hash_init(&mydata->virtual_dirs, manifest_count * 2,
                zend_get_hash_value, NULL, (zend_bool)mydata->is_persistent);
+       mydata->fname = pestrndup(fname, fname_len, mydata->is_persistent);
+#ifdef PHP_WIN32
+       phar_unixify_path_separators(mydata->fname, fname_len);
+#endif
+       mydata->fname_len = fname_len;
        offset = halt_offset + manifest_len + 4;
        memset(&entry, 0, sizeof(phar_entry_info));
        entry.phar = mydata;
@@ -1096,11 +1101,6 @@ static int phar_parse_pharfile(php_stream *fp, char *fname, int fname_len, char
        mydata->internal_file_start = halt_offset + manifest_len + 4;
        mydata->halt_offset = halt_offset;
        mydata->flags = manifest_flags;
-       mydata->fname = pestrndup(fname, fname_len, mydata->is_persistent);
-#ifdef PHP_WIN32
-       phar_unixify_path_separators(mydata->fname, fname_len);
-#endif
-       mydata->fname_len = fname_len;
        endbuffer = strrchr(mydata->fname, '/');
        if (endbuffer) {
                mydata->ext = memchr(endbuffer, '.', (mydata->fname + fname_len) - endbuffer);
index 124a1181fa1503cbb4e1cfb845ee7f6f460f1c68..1eff3fd5ef7c156b4a1bdc6ae48b31d508af03e7 100755 (executable)
Binary files a/ext/phar/phar.phar and b/ext/phar/phar.phar differ
index 8f12943122f8a5d0c8babb76421db100d8f12d2e..51a4026390a50b97ccf0b1bff2cb8905bf034da5 100644 (file)
@@ -223,6 +223,11 @@ int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias,
                zend_get_hash_value, NULL, (zend_bool)myphar->is_persistent);
        zend_hash_init(&myphar->virtual_dirs, 4 + (totalsize >> 11),
                zend_get_hash_value, NULL, (zend_bool)myphar->is_persistent);
+       myphar->fname = pestrndup(fname, fname_len, myphar->is_persistent);
+#ifdef PHP_WIN32
+       phar_unixify_path_separators(myphar->fname, fname_len);
+#endif
+       myphar->fname_len = fname_len;
        myphar->is_tar = 1;
        /* remember whether this entire phar was compressed with gz/bzip2 */
        myphar->flags = compression;
@@ -544,11 +549,6 @@ bail:
                return FAILURE;
        }
 
-       myphar->fname = pestrndup(fname, fname_len, myphar->is_persistent);
-#ifdef PHP_WIN32
-       phar_unixify_path_separators(myphar->fname, fname_len);
-#endif
-       myphar->fname_len = fname_len;
        myphar->fp = fp;
        p = strrchr(myphar->fname, '/');