From: Greg Beaver Date: Sun, 22 Jun 2008 00:50:32 +0000 (+0000) Subject: fix inode calculation, we need fname to be set for phar/tar formats prior to manifest... X-Git-Tag: php-5.3.0alpha1~670 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3a8b14f83fdca5682763eed184f36532535898c2;p=php fix inode calculation, we need fname to be set for phar/tar formats prior to manifest parsing --- diff --git a/ext/phar/cgidebug b/ext/phar/cgidebug index f356f9b104..cc3d6b41e6 100755 --- a/ext/phar/cgidebug +++ b/ext/phar/cgidebug @@ -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 diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 34af019dc2..4de7904354 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -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); diff --git a/ext/phar/phar.phar b/ext/phar/phar.phar index 124a1181fa..1eff3fd5ef 100755 Binary files a/ext/phar/phar.phar and b/ext/phar/phar.phar differ diff --git a/ext/phar/tar.c b/ext/phar/tar.c index 8f12943122..51a4026390 100644 --- a/ext/phar/tar.c +++ b/ext/phar/tar.c @@ -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, '/');