version 1.1, 2012/02/21 23:47:59
|
version 1.1.1.4, 2014/06/15 20:03:54
|
Line 2
|
Line 2
|
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| phar php single-file executable PHP extension | |
| phar php single-file executable PHP extension | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| Copyright (c) 2005-2012 The PHP Group | | | Copyright (c) 2005-2014 The PHP Group | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| This source file is subject to version 3.01 of the PHP license, | |
| This source file is subject to version 3.01 of the PHP license, | |
| that is bundled with this package in the file LICENSE, and is | |
| that is bundled with this package in the file LICENSE, and is | |
Line 58 static int phar_file_type(HashTable *mimes, char *file
|
Line 58 static int phar_file_type(HashTable *mimes, char *file
|
|
|
static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char *basename, int request_uri_len TSRMLS_DC) /* {{{ */ |
static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char *basename, int request_uri_len TSRMLS_DC) /* {{{ */ |
{ |
{ |
#if PHP_MAJOR_VERSION >= 6 |
|
int is_unicode = 0; |
|
#endif |
|
HashTable *_SERVER; |
HashTable *_SERVER; |
zval **stuff; |
zval **stuff; |
char *path_info; |
char *path_info; |
Line 76 static void phar_mung_server_vars(char *fname, char *e
|
Line 73 static void phar_mung_server_vars(char *fname, char *e
|
_SERVER = Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]); |
_SERVER = Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]); |
|
|
/* PATH_INFO and PATH_TRANSLATED should always be munged */ |
/* PATH_INFO and PATH_TRANSLATED should always be munged */ |
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(_SERVER, "PATH_INFO", sizeof("PATH_INFO"), (void **) &stuff TSRMLS_CC)) { |
|
if (Z_TYPE_PP(stuff) == IS_UNICODE) { |
|
is_unicode = 1; |
|
zval_unicode_to_string(*stuff TSRMLS_CC); |
|
} else { |
|
is_unicode = 0; |
|
} |
|
#else |
|
if (SUCCESS == zend_hash_find(_SERVER, "PATH_INFO", sizeof("PATH_INFO"), (void **) &stuff)) { |
if (SUCCESS == zend_hash_find(_SERVER, "PATH_INFO", sizeof("PATH_INFO"), (void **) &stuff)) { |
#endif |
|
|
|
path_info = Z_STRVAL_PP(stuff); |
path_info = Z_STRVAL_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
|
|
Line 96 static void phar_mung_server_vars(char *fname, char *e
|
Line 82 static void phar_mung_server_vars(char *fname, char *e
|
|
|
MAKE_STD_ZVAL(temp); |
MAKE_STD_ZVAL(temp); |
ZVAL_STRINGL(temp, path_info, code, 0); |
ZVAL_STRINGL(temp, path_info, code, 0); |
#if PHP_MAJOR_VERSION >= 6 | |
if (is_unicode) { | |
zval_string_to_unicode(*stuff TSRMLS_CC); | |
} | |
#endif | |
zend_hash_update(_SERVER, "PHAR_PATH_INFO", sizeof("PHAR_PATH_INFO"), &temp, sizeof(zval **), NULL); |
zend_hash_update(_SERVER, "PHAR_PATH_INFO", sizeof("PHAR_PATH_INFO"), &temp, sizeof(zval **), NULL); |
} |
} |
} |
} |
|
|
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED"), (void **) &stuff TSRMLS_CC)) { |
|
if (Z_TYPE_PP(stuff) == IS_UNICODE) { |
|
is_unicode = 1; |
|
zval_unicode_to_string(*stuff TSRMLS_CC); |
|
} else { |
|
is_unicode = 0; |
|
} |
|
#else |
|
if (SUCCESS == zend_hash_find(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED"), (void **) &stuff)) { |
if (SUCCESS == zend_hash_find(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED"), (void **) &stuff)) { |
#endif |
|
|
|
path_info = Z_STRVAL_PP(stuff); |
path_info = Z_STRVAL_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry); |
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry); |
|
|
MAKE_STD_ZVAL(temp); |
MAKE_STD_ZVAL(temp); |
ZVAL_STRINGL(temp, path_info, code, 0); |
ZVAL_STRINGL(temp, path_info, code, 0); |
#if PHP_MAJOR_VERSION >= 6 | |
if (is_unicode) { | |
zval_string_to_unicode(*stuff TSRMLS_CC); | |
} | |
#endif | |
zend_hash_update(_SERVER, "PHAR_PATH_TRANSLATED", sizeof("PHAR_PATH_TRANSLATED"), (void *) &temp, sizeof(zval **), NULL); |
zend_hash_update(_SERVER, "PHAR_PATH_TRANSLATED", sizeof("PHAR_PATH_TRANSLATED"), (void *) &temp, sizeof(zval **), NULL); |
} |
} |
|
|
Line 136 static void phar_mung_server_vars(char *fname, char *e
|
Line 103 static void phar_mung_server_vars(char *fname, char *e
|
} |
} |
|
|
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_REQUEST_URI) { |
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_REQUEST_URI) { |
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(_SERVER, "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &stuff TSRMLS_CC)) { |
|
if (Z_TYPE_PP(stuff) == IS_UNICODE) { |
|
is_unicode = 1; |
|
zval_unicode_to_string(*stuff TSRMLS_CC); |
|
} else { |
|
is_unicode = 0; |
|
} |
|
#else |
|
if (SUCCESS == zend_hash_find(_SERVER, "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &stuff)) { |
if (SUCCESS == zend_hash_find(_SERVER, "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &stuff)) { |
#endif |
|
|
|
path_info = Z_STRVAL_PP(stuff); |
path_info = Z_STRVAL_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
|
|
Line 156 static void phar_mung_server_vars(char *fname, char *e
|
Line 112 static void phar_mung_server_vars(char *fname, char *e
|
|
|
MAKE_STD_ZVAL(temp); |
MAKE_STD_ZVAL(temp); |
ZVAL_STRINGL(temp, path_info, code, 0); |
ZVAL_STRINGL(temp, path_info, code, 0); |
#if PHP_MAJOR_VERSION >= 6 | |
if (is_unicode) { | |
zval_string_to_unicode(*stuff TSRMLS_CC); | |
} | |
#endif | |
zend_hash_update(_SERVER, "PHAR_REQUEST_URI", sizeof("PHAR_REQUEST_URI"), (void *) &temp, sizeof(zval **), NULL); |
zend_hash_update(_SERVER, "PHAR_REQUEST_URI", sizeof("PHAR_REQUEST_URI"), (void *) &temp, sizeof(zval **), NULL); |
} |
} |
} |
} |
} |
} |
|
|
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_PHP_SELF) { |
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_PHP_SELF) { |
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(_SERVER, "PHP_SELF", sizeof("PHP_SELF"), (void **) &stuff TSRMLS_CC)) { |
|
if (Z_TYPE_PP(stuff) == IS_UNICODE) { |
|
is_unicode = 1; |
|
zval_unicode_to_string(*stuff TSRMLS_CC); |
|
} else { |
|
is_unicode = 0; |
|
} |
|
#else |
|
if (SUCCESS == zend_hash_find(_SERVER, "PHP_SELF", sizeof("PHP_SELF"), (void **) &stuff)) { |
if (SUCCESS == zend_hash_find(_SERVER, "PHP_SELF", sizeof("PHP_SELF"), (void **) &stuff)) { |
#endif |
|
|
|
path_info = Z_STRVAL_PP(stuff); |
path_info = Z_STRVAL_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
|
|
Line 187 static void phar_mung_server_vars(char *fname, char *e
|
Line 128 static void phar_mung_server_vars(char *fname, char *e
|
|
|
MAKE_STD_ZVAL(temp); |
MAKE_STD_ZVAL(temp); |
ZVAL_STRINGL(temp, path_info, code, 0); |
ZVAL_STRINGL(temp, path_info, code, 0); |
#if PHP_MAJOR_VERSION >= 6 | |
if (is_unicode) { | |
zval_string_to_unicode(*stuff TSRMLS_CC); | |
} | |
#endif | |
zend_hash_update(_SERVER, "PHAR_PHP_SELF", sizeof("PHAR_PHP_SELF"), (void *) &temp, sizeof(zval **), NULL); |
zend_hash_update(_SERVER, "PHAR_PHP_SELF", sizeof("PHAR_PHP_SELF"), (void *) &temp, sizeof(zval **), NULL); |
} |
} |
} |
} |
} |
} |
|
|
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_NAME) { |
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_NAME) { |
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(_SERVER, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &stuff TSRMLS_CC)) { |
|
if (Z_TYPE_PP(stuff) == IS_UNICODE) { |
|
is_unicode = 1; |
|
zval_unicode_to_string(*stuff TSRMLS_CC); |
|
} else { |
|
is_unicode = 0; |
|
} |
|
#else |
|
if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &stuff)) { |
if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &stuff)) { |
#endif |
|
|
|
path_info = Z_STRVAL_PP(stuff); |
path_info = Z_STRVAL_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
ZVAL_STRINGL(*stuff, entry, entry_len, 1); |
ZVAL_STRINGL(*stuff, entry, entry_len, 1); |
|
|
MAKE_STD_ZVAL(temp); |
MAKE_STD_ZVAL(temp); |
ZVAL_STRINGL(temp, path_info, code, 0); |
ZVAL_STRINGL(temp, path_info, code, 0); |
#if PHP_MAJOR_VERSION >= 6 | |
if (is_unicode) { | |
zval_string_to_unicode(*stuff TSRMLS_CC); | |
} | |
#endif | |
zend_hash_update(_SERVER, "PHAR_SCRIPT_NAME", sizeof("PHAR_SCRIPT_NAME"), (void *) &temp, sizeof(zval **), NULL); |
zend_hash_update(_SERVER, "PHAR_SCRIPT_NAME", sizeof("PHAR_SCRIPT_NAME"), (void *) &temp, sizeof(zval **), NULL); |
} |
} |
} |
} |
|
|
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_FILENAME) { |
if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_FILENAME) { |
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME"), (void **) &stuff TSRMLS_CC)) { |
|
if (Z_TYPE_PP(stuff) == IS_UNICODE) { |
|
is_unicode = 1; |
|
zval_unicode_to_string(*stuff TSRMLS_CC); |
|
} else { |
|
is_unicode = 0; |
|
} |
|
#else |
|
if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME"), (void **) &stuff)) { |
if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME"), (void **) &stuff)) { |
#endif |
|
|
|
path_info = Z_STRVAL_PP(stuff); |
path_info = Z_STRVAL_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
code = Z_STRLEN_PP(stuff); |
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry); |
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry); |
|
|
MAKE_STD_ZVAL(temp); |
MAKE_STD_ZVAL(temp); |
ZVAL_STRINGL(temp, path_info, code, 0); |
ZVAL_STRINGL(temp, path_info, code, 0); |
#if PHP_MAJOR_VERSION >= 6 | |
if (is_unicode) { | |
zval_string_to_unicode(*stuff TSRMLS_CC); | |
} | |
#endif | |
zend_hash_update(_SERVER, "PHAR_SCRIPT_FILENAME", sizeof("PHAR_SCRIPT_FILENAME"), (void *) &temp, sizeof(zval **), NULL); |
zend_hash_update(_SERVER, "PHAR_SCRIPT_FILENAME", sizeof("PHAR_SCRIPT_FILENAME"), (void *) &temp, sizeof(zval **), NULL); |
} |
} |
} |
} |
Line 257 static void phar_mung_server_vars(char *fname, char *e
|
Line 164 static void phar_mung_server_vars(char *fname, char *e
|
|
|
static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char *mime_type, int code, char *entry, int entry_len, char *arch, char *basename, char *ru, int ru_len TSRMLS_DC) /* {{{ */ |
static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char *mime_type, int code, char *entry, int entry_len, char *arch, char *basename, char *ru, int ru_len TSRMLS_DC) /* {{{ */ |
{ |
{ |
char *name = NULL, buf[8192], *cwd; | char *name = NULL, buf[8192]; |
| const char *cwd; |
zend_syntax_highlighter_ini syntax_highlighter_ini; |
zend_syntax_highlighter_ini syntax_highlighter_ini; |
sapi_header_line ctr = {0}; |
sapi_header_line ctr = {0}; |
size_t got; |
size_t got; |
Line 427 static void phar_do_403(char *entry, int entry_len TSR
|
Line 335 static void phar_do_403(char *entry, int entry_len TSR
|
sapi_header_line ctr = {0}; |
sapi_header_line ctr = {0}; |
|
|
ctr.response_code = 403; |
ctr.response_code = 403; |
ctr.line_len = sizeof("HTTP/1.0 403 Access Denied"); | ctr.line_len = sizeof("HTTP/1.0 403 Access Denied")-1; |
ctr.line = "HTTP/1.0 403 Access Denied"; |
ctr.line = "HTTP/1.0 403 Access Denied"; |
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); |
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); |
sapi_send_headers(TSRMLS_C); |
sapi_send_headers(TSRMLS_C); |
Line 452 static void phar_do_404(phar_archive_data *phar, char
|
Line 360 static void phar_do_404(phar_archive_data *phar, char
|
} |
} |
|
|
ctr.response_code = 404; |
ctr.response_code = 404; |
ctr.line_len = sizeof("HTTP/1.0 404 Not Found")+1; | ctr.line_len = sizeof("HTTP/1.0 404 Not Found")-1; |
ctr.line = "HTTP/1.0 404 Not Found"; |
ctr.line = "HTTP/1.0 404 Not Found"; |
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); |
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); |
sapi_send_headers(TSRMLS_C); |
sapi_send_headers(TSRMLS_C); |
Line 540 PHP_METHOD(Phar, running)
|
Line 448 PHP_METHOD(Phar, running)
|
return; |
return; |
} |
} |
|
|
fname = zend_get_executed_filename(TSRMLS_C); | fname = (char*)zend_get_executed_filename(TSRMLS_C); |
fname_len = strlen(fname); |
fname_len = strlen(fname); |
|
|
if (fname_len > 7 && !memcmp(fname, "phar://", 7) && SUCCESS == phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, 2, 0 TSRMLS_CC)) { |
if (fname_len > 7 && !memcmp(fname, "phar://", 7) && SUCCESS == phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, 2, 0 TSRMLS_CC)) { |
Line 574 PHP_METHOD(Phar, mount)
|
Line 482 PHP_METHOD(Phar, mount)
|
return; |
return; |
} |
} |
|
|
fname = zend_get_executed_filename(TSRMLS_C); | fname = (char*)zend_get_executed_filename(TSRMLS_C); |
fname_len = strlen(fname); |
fname_len = strlen(fname); |
|
|
#ifdef PHP_WIN32 |
#ifdef PHP_WIN32 |
Line 658 PHP_METHOD(Phar, webPhar)
|
Line 566 PHP_METHOD(Phar, webPhar)
|
zval *mimeoverride = NULL, *rewrite = NULL; |
zval *mimeoverride = NULL, *rewrite = NULL; |
char *alias = NULL, *error, *index_php = NULL, *f404 = NULL, *ru = NULL; |
char *alias = NULL, *error, *index_php = NULL, *f404 = NULL, *ru = NULL; |
int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0, ru_len = 0; |
int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0, ru_len = 0; |
char *fname, *basename, *path_info, *mime_type = NULL, *entry, *pt; | char *fname, *path_info, *mime_type = NULL, *entry, *pt; |
| const char *basename; |
int fname_len, entry_len, code, index_php_len = 0, not_cgi; |
int fname_len, entry_len, code, index_php_len = 0, not_cgi; |
phar_archive_data *phar = NULL; |
phar_archive_data *phar = NULL; |
phar_entry_info *info = NULL; |
phar_entry_info *info = NULL; |
Line 668 PHP_METHOD(Phar, webPhar)
|
Line 577 PHP_METHOD(Phar, webPhar)
|
} |
} |
|
|
phar_request_initialize(TSRMLS_C); |
phar_request_initialize(TSRMLS_C); |
fname = zend_get_executed_filename(TSRMLS_C); | fname = (char*)zend_get_executed_filename(TSRMLS_C); |
fname_len = strlen(fname); |
fname_len = strlen(fname); |
|
|
if (phar_open_executed_filename(alias, alias_len, &error TSRMLS_CC) != SUCCESS) { |
if (phar_open_executed_filename(alias, alias_len, &error TSRMLS_CC) != SUCCESS) { |
Line 891 PHP_METHOD(Phar, webPhar)
|
Line 800 PHP_METHOD(Phar, webPhar)
|
char *tmp = NULL, sa = '\0'; |
char *tmp = NULL, sa = '\0'; |
sapi_header_line ctr = {0}; |
sapi_header_line ctr = {0}; |
ctr.response_code = 301; |
ctr.response_code = 301; |
ctr.line_len = sizeof("HTTP/1.1 301 Moved Permanently")+1; | ctr.line_len = sizeof("HTTP/1.1 301 Moved Permanently")-1; |
ctr.line = "HTTP/1.1 301 Moved Permanently"; |
ctr.line = "HTTP/1.1 301 Moved Permanently"; |
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); |
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); |
|
|
Line 934 PHP_METHOD(Phar, webPhar)
|
Line 843 PHP_METHOD(Phar, webPhar)
|
} |
} |
|
|
if (mimeoverride && zend_hash_num_elements(Z_ARRVAL_P(mimeoverride))) { |
if (mimeoverride && zend_hash_num_elements(Z_ARRVAL_P(mimeoverride))) { |
char *ext = zend_memrchr(entry, '.', entry_len); | const char *ext = zend_memrchr(entry, '.', entry_len); |
zval **val; |
zval **val; |
|
|
if (ext) { |
if (ext) { |
++ext; |
++ext; |
|
|
#if PHP_MAJOR_VERSION >= 6 |
|
if (phar_find_key(Z_ARRVAL_P(mimeoverride), ext, strlen(ext)+1, (void **) &val TSRMLS_CC)) { |
|
#else |
|
if (SUCCESS == zend_hash_find(Z_ARRVAL_P(mimeoverride), ext, strlen(ext)+1, (void **) &val)) { |
if (SUCCESS == zend_hash_find(Z_ARRVAL_P(mimeoverride), ext, strlen(ext)+1, (void **) &val)) { |
#endif |
|
switch (Z_TYPE_PP(val)) { |
switch (Z_TYPE_PP(val)) { |
case IS_LONG: |
case IS_LONG: |
if (Z_LVAL_PP(val) == PHAR_MIME_PHP || Z_LVAL_PP(val) == PHAR_MIME_PHPS) { |
if (Z_LVAL_PP(val) == PHAR_MIME_PHP || Z_LVAL_PP(val) == PHAR_MIME_PHPS) { |
Line 958 PHP_METHOD(Phar, webPhar)
|
Line 863 PHP_METHOD(Phar, webPhar)
|
RETURN_FALSE; |
RETURN_FALSE; |
} |
} |
break; |
break; |
#if PHP_MAJOR_VERSION >= 6 |
|
case IS_UNICODE: |
|
zval_unicode_to_string(*(val) TSRMLS_CC); |
|
/* break intentionally omitted */ |
|
#endif |
|
case IS_STRING: |
case IS_STRING: |
mime_type = Z_STRVAL_PP(val); |
mime_type = Z_STRVAL_PP(val); |
code = PHAR_MIME_OTHER; |
code = PHAR_MIME_OTHER; |
Line 1013 PHP_METHOD(Phar, mungServer)
|
Line 913 PHP_METHOD(Phar, mungServer)
|
|
|
for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(mungvalues)); SUCCESS == zend_hash_has_more_elements(Z_ARRVAL_P(mungvalues)); zend_hash_move_forward(Z_ARRVAL_P(mungvalues))) { |
for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(mungvalues)); SUCCESS == zend_hash_has_more_elements(Z_ARRVAL_P(mungvalues)); zend_hash_move_forward(Z_ARRVAL_P(mungvalues))) { |
zval **data = NULL; |
zval **data = NULL; |
#if PHP_MAJOR_VERSION >= 6 |
|
zval *unicopy = NULL; |
|
#endif |
|
|
|
if (SUCCESS != zend_hash_get_current_data(Z_ARRVAL_P(mungvalues), (void **) &data)) { |
if (SUCCESS != zend_hash_get_current_data(Z_ARRVAL_P(mungvalues), (void **) &data)) { |
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "unable to retrieve array value in Phar::mungServer()"); |
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "unable to retrieve array value in Phar::mungServer()"); |
return; |
return; |
} |
} |
|
|
#if PHP_MAJOR_VERSION >= 6 |
|
if (Z_TYPE_PP(data) == IS_UNICODE) { |
|
MAKE_STD_ZVAL(unicopy); |
|
*unicopy = **data; |
|
zval_copy_ctor(unicopy); |
|
INIT_PZVAL(unicopy); |
|
zval_unicode_to_string(unicopy TSRMLS_CC); |
|
data = &unicopy; |
|
} |
|
#endif |
|
|
|
if (Z_TYPE_PP(data) != IS_STRING) { |
if (Z_TYPE_PP(data) != IS_STRING) { |
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Non-string value passed to Phar::mungServer(), expecting an array of any of these strings: PHP_SELF, REQUEST_URI, SCRIPT_FILENAME, SCRIPT_NAME"); |
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Non-string value passed to Phar::mungServer(), expecting an array of any of these strings: PHP_SELF, REQUEST_URI, SCRIPT_FILENAME, SCRIPT_NAME"); |
return; |
return; |
Line 1054 PHP_METHOD(Phar, mungServer)
|
Line 940 PHP_METHOD(Phar, mungServer)
|
if (Z_STRLEN_PP(data) == sizeof("SCRIPT_FILENAME")-1 && !strncmp(Z_STRVAL_PP(data), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) { |
if (Z_STRLEN_PP(data) == sizeof("SCRIPT_FILENAME")-1 && !strncmp(Z_STRVAL_PP(data), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) { |
PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_SCRIPT_FILENAME; |
PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_SCRIPT_FILENAME; |
} |
} |
#if PHP_MAJOR_VERSION >= 6 |
|
if (unicopy) { |
|
zval_ptr_dtor(&unicopy); |
|
} |
|
#endif |
|
} |
} |
} |
} |
/* }}} */ |
/* }}} */ |
Line 1480 PHP_METHOD(Phar, unlinkArchive)
|
Line 1361 PHP_METHOD(Phar, unlinkArchive)
|
return; |
return; |
} |
} |
|
|
zname = zend_get_executed_filename(TSRMLS_C); | zname = (char*)zend_get_executed_filename(TSRMLS_C); |
zname_len = strlen(zname); |
zname_len = strlen(zname); |
|
|
if (zname_len > 7 && !memcmp(zname, "phar://", 7) && SUCCESS == phar_split_fname(zname, zname_len, &arch, &arch_len, &entry, &entry_len, 2, 0 TSRMLS_CC)) { |
if (zname_len > 7 && !memcmp(zname, "phar://", 7) && SUCCESS == phar_split_fname(zname, zname_len, &arch, &arch_len, &entry, &entry_len, 2, 0 TSRMLS_CC)) { |
Line 1632 static int phar_build(zend_object_iterator *iter, void
|
Line 1513 static int phar_build(zend_object_iterator *iter, void
|
} |
} |
|
|
close_fp = 0; |
close_fp = 0; |
opened = (char *) estrndup(str, sizeof("[stream]") + 1); | opened = (char *) estrndup(str, sizeof("[stream]") - 1); |
goto after_open_fp; |
goto after_open_fp; |
case IS_OBJECT: |
case IS_OBJECT: |
if (instanceof_function(Z_OBJCE_PP(value), spl_ce_SplFileInfo TSRMLS_CC)) { |
if (instanceof_function(Z_OBJCE_PP(value), spl_ce_SplFileInfo TSRMLS_CC)) { |
Line 2018 PHP_METHOD(Phar, buildFromDirectory)
|
Line 1899 PHP_METHOD(Phar, buildFromDirectory)
|
pass.count = 0; |
pass.count = 0; |
pass.ret = return_value; |
pass.ret = return_value; |
pass.fp = php_stream_fopen_tmpfile(); |
pass.fp = php_stream_fopen_tmpfile(); |
|
if (pass.fp == NULL) { |
|
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "phar \"%s\" unable to create temporary file", phar_obj->arc.archive->fname); |
|
return; |
|
} |
|
|
if (phar_obj->arc.archive->is_persistent && FAILURE == phar_copy_on_write(&(phar_obj->arc.archive) TSRMLS_CC)) { |
if (phar_obj->arc.archive->is_persistent && FAILURE == phar_copy_on_write(&(phar_obj->arc.archive) TSRMLS_CC)) { |
zval_ptr_dtor(&iteriter); |
zval_ptr_dtor(&iteriter); |
Line 2098 PHP_METHOD(Phar, buildFromIterator)
|
Line 1983 PHP_METHOD(Phar, buildFromIterator)
|
pass.ret = return_value; |
pass.ret = return_value; |
pass.count = 0; |
pass.count = 0; |
pass.fp = php_stream_fopen_tmpfile(); |
pass.fp = php_stream_fopen_tmpfile(); |
|
if (pass.fp == NULL) { |
|
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "phar \"%s\": unable to create temporary file", phar_obj->arc.archive->fname); |
|
return; |
|
} |
|
|
if (SUCCESS == spl_iterator_apply(obj, (spl_iterator_apply_func_t) phar_build, (void *) &pass TSRMLS_CC)) { |
if (SUCCESS == spl_iterator_apply(obj, (spl_iterator_apply_func_t) phar_build, (void *) &pass TSRMLS_CC)) { |
phar_obj->arc.archive->ufp = pass.fp; |
phar_obj->arc.archive->ufp = pass.fp; |
Line 2201 static int phar_copy_file_contents(phar_entry_info *en
|
Line 2090 static int phar_copy_file_contents(phar_entry_info *en
|
|
|
static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool compress TSRMLS_DC) /* {{{ */ |
static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool compress TSRMLS_DC) /* {{{ */ |
{ |
{ |
char *oldname = NULL, *oldpath = NULL; | const char *oldname = NULL; |
| char *oldpath = NULL; |
char *basename = NULL, *basepath = NULL; |
char *basename = NULL, *basepath = NULL; |
char *newname = NULL, *newpath = NULL; |
char *newname = NULL, *newpath = NULL; |
zval *ret, arg1; |
zval *ret, arg1; |
Line 2429 static zval *phar_convert_to_other(phar_archive_data *
|
Line 2319 static zval *phar_convert_to_other(phar_archive_data *
|
zend_get_hash_value, NULL, 0); |
zend_get_hash_value, NULL, 0); |
|
|
phar->fp = php_stream_fopen_tmpfile(); |
phar->fp = php_stream_fopen_tmpfile(); |
|
if (phar->fp == NULL) { |
|
zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "unable to create temporary file"); |
|
return NULL; |
|
} |
phar->fname = source->fname; |
phar->fname = source->fname; |
phar->fname_len = source->fname_len; |
phar->fname_len = source->fname_len; |
phar->is_temporary_alias = source->is_temporary_alias; |
phar->is_temporary_alias = source->is_temporary_alias; |
Line 4296 static int phar_extract_file(zend_bool overwrite, phar
|
Line 4190 static int phar_extract_file(zend_bool overwrite, phar
|
php_stream_statbuf ssb; |
php_stream_statbuf ssb; |
int len; |
int len; |
php_stream *fp; |
php_stream *fp; |
char *fullpath, *slash; | char *fullpath; |
| const char *slash; |
mode_t mode; |
mode_t mode; |
|
|
if (entry->is_mounted) { |
if (entry->is_mounted) { |
Line 5033 PHP_METHOD(PharFileInfo, getContent)
|
Line 4928 PHP_METHOD(PharFileInfo, getContent)
|
|
|
phar_seek_efp(link, 0, SEEK_SET, 0, 0 TSRMLS_CC); |
phar_seek_efp(link, 0, SEEK_SET, 0, 0 TSRMLS_CC); |
Z_TYPE_P(return_value) = IS_STRING; |
Z_TYPE_P(return_value) = IS_STRING; |
#if PHP_MAJOR_VERSION >= 6 |
|
Z_STRLEN_P(return_value) = php_stream_copy_to_mem(fp, (void **) &(Z_STRVAL_P(return_value)), link->uncompressed_filesize, 0); |
|
#else |
|
Z_STRLEN_P(return_value) = php_stream_copy_to_mem(fp, &(Z_STRVAL_P(return_value)), link->uncompressed_filesize, 0); |
Z_STRLEN_P(return_value) = php_stream_copy_to_mem(fp, &(Z_STRVAL_P(return_value)), link->uncompressed_filesize, 0); |
#endif |
|
|
|
if (!Z_STRVAL_P(return_value)) { |
if (!Z_STRVAL_P(return_value)) { |
Z_STRVAL_P(return_value) = estrndup("", 0); |
Z_STRVAL_P(return_value) = estrndup("", 0); |