Skip to content

Commit 788ac67

Browse files
PR #297 / Bug #60953
- removed backwards compatibility file name extension code - fixed all tests and their cleanup to reflect new file name suffixes
1 parent a7a9f4c commit 788ac67

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

ext/phar/phar_object.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2005,7 +2005,7 @@ static zend_object *phar_rename_archive(phar_archive_data *phar, char *ext, zend
20052005
char *basename = NULL, *basepath = NULL;
20062006
char *newbasename = NULL, *newname = NULL, *newpath = NULL;
20072007
char *oldname_ext = NULL;
2008-
zval *ret, arg1;
2008+
zval ret, arg1;
20092009
zend_class_entry *ce;
20102010
char *error;
20112011
const char *pcr_error;
@@ -2081,30 +2081,33 @@ static zend_object *phar_rename_archive(phar_archive_data *phar, char *ext, zend
20812081

20822082
basename = estrndup(oldname, oldname_len);
20832083

2084-
/* find extension name, .phar for executable phars, .zip* and .tar* for data only phars */
2084+
/* find extension name: .phar suffixed with anything and .zip* and .tar* without .phar for data archives */
20852085
oldname_ext = strstr(basename, ".phar");
2086-
if (oldname_ext == NULL && phar->is_data) {
2086+
if (oldname_ext == NULL) {
20872087
oldname_ext = strstr(basename, ".tar");
20882088
if (oldname_ext == NULL) {
2089-
oldname_ext = strstr(basename, ".zip");
2089+
oldname_ext = strstr(basename, ".tgz");
2090+
if (oldname_ext == NULL) {
2091+
oldname_ext = strstr(basename, ".zip");
2092+
}
20902093
}
20912094
}
20922095

2093-
if (oldname_ext == NULL) {
2094-
/* old behavior for BC, take anything after first . */
2095-
oldname_ext = strstr(basename, ".");
2096+
newbasename = basename;
2097+
2098+
if (oldname_ext != NULL) {
2099+
newbasename = estrndup(basename, (oldname_ext - basename));
20962100
}
20972101

2098-
newbasename = estrndup(basename, (oldname_ext - basename));
20992102
spprintf(&newname, 0, "%s.%s", newbasename, ext);
2103+
efree(newbasename);
21002104
efree(basename);
21012105

21022106
basepath = estrndup(oldpath, (strlen(oldpath) - oldname_len));
21032107
phar->fname_len = spprintf(&newpath, 0, "%s%s", basepath, newname);
21042108
phar->fname = newpath;
21052109
phar->ext = newpath + phar->fname_len - strlen(ext) - 1;
21062110
efree(basepath);
2107-
efree(newbasename);
21082111
efree(newname);
21092112

21102113
if (PHAR_G(manifest_cached) && NULL != (pphar = zend_hash_str_find_ptr(&cached_phars, newpath, phar->fname_len))) {

ext/phar/tests/bug48377.2.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.zip';
1212
$phar = new PharData($fname);
1313
$phar['x'] = 'hi';
1414
try {
15-
$phar->convertToData(Phar::ZIP, Phar::NONE, '.2.phar.zip');
15+
$phar->convertToData(Phar::ZIP, Phar::NONE, 'zip');
1616
} catch (BadMethodCallException $e) {
1717
echo $e->getMessage(),"\n";
1818
}
@@ -21,5 +21,5 @@ try {
2121
--CLEAN--
2222
<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.zip');?>
2323
--EXPECTF--
24-
data phar "%sbug48377.2.phar.zip" has invalid extension 2.phar.zip
24+
Unable to add newly converted phar "%sbug48377.2.zip" to the list of phars, a phar with that name already exists
2525
===DONE===

ext/phar/tests/phar_convert_repeated_b.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ try {
8282
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.gz');
8383
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar.gz');
8484
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar');
85-
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar');
8685
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.zip');
8786
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.1.zip');
87+
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.1.2.tar');
8888
?>
8989
--EXPECT--
9090
=================== new PharData() ==================

ext/phar/tests/stat2_5.3.phpt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ is_link();
1414
var_dump(is_file(__FILE__));
1515

1616
$fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar';
17-
$fname3 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.tar';
1817
copy(dirname(__FILE__) . '/tar/files/links.tar', $fname2);
1918
$a = new PharData($fname2);
2019
$b = $a->convertToExecutable(Phar::TAR, Phar::NONE);
@@ -33,7 +32,7 @@ $b->addEmptyDir('foo/bar/blah');
3332
$b->setStub('<?php
3433
include "phar://" . __FILE__ . "/foo/stat.php";
3534
__HALT_COMPILER();');
36-
include $fname3;
35+
include dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.tar';
3736
?>
3837
===DONE===
3938
--CLEAN--

0 commit comments

Comments
 (0)