summaryrefslogtreecommitdiff
path: root/ext/phar/util.c
diff options
context:
space:
mode:
authorGreg Beaver <cellog@php.net>2008-04-28 06:03:33 +0000
committerGreg Beaver <cellog@php.net>2008-04-28 06:03:33 +0000
commitfbb2e8ce601b2fcde6e1d9da2060403c16d76b2d (patch)
treede879e2a030fde999af279b41bdb00a2ec32f622 /ext/phar/util.c
parent62f824b6e1025638ccdba4cef79d3b0b6a8e6917 (diff)
downloadphp-git-fbb2e8ce601b2fcde6e1d9da2060403c16d76b2d.tar.gz
more fixes for PHAR_G(cwd)
Diffstat (limited to 'ext/phar/util.c')
-rw-r--r--ext/phar/util.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/ext/phar/util.c b/ext/phar/util.c
index c006fb47a4..fed3b2b6ca 100644
--- a/ext/phar/util.c
+++ b/ext/phar/util.c
@@ -236,11 +236,20 @@ char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_d
efree(entry);
try_len = filename_len;
test = phar_fix_filepath(estrndup(filename, filename_len), &try_len, 1 TSRMLS_CC);
- if (zend_hash_exists(&((*pphar)->manifest), test + 1, try_len - 1)) {
- spprintf(&ret, 0, "phar://%s%s", arch, test);
- efree(arch);
- efree(test);
- return ret;
+ if (*test == '/') {
+ if (zend_hash_exists(&((*pphar)->manifest), test + 1, try_len - 1)) {
+ spprintf(&ret, 0, "phar://%s%s", arch, test);
+ efree(arch);
+ efree(test);
+ return ret;
+ }
+ } else {
+ if (zend_hash_exists(&((*pphar)->manifest), test, try_len)) {
+ spprintf(&ret, 0, "phar://%s/%s", arch, test);
+ efree(arch);
+ efree(test);
+ return ret;
+ }
}
}
efree(entry);