diff options
Diffstat (limited to 'ext/phar/phar_internal.h')
-rwxr-xr-x | ext/phar/phar_internal.h | 64 |
1 files changed, 30 insertions, 34 deletions
diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h index efe28671fa..38b1e8816e 100755 --- a/ext/phar/phar_internal.h +++ b/ext/phar/phar_internal.h @@ -66,7 +66,7 @@ #ifdef HAVE_STDINT_H #include <stdint.h> #endif -#ifdef PHAR_HASH_OK +#if HAVE_HASH_EXT #include "ext/hash/php_hash.h" #include "ext/hash/php_hash_sha.h" #endif @@ -150,9 +150,6 @@ typedef struct _phar_entry_fp phar_entry_fp; typedef struct _phar_archive_data phar_archive_data; ZEND_BEGIN_MODULE_GLOBALS(phar) - /* a list of phar_archive_data objects that reference a cached phar, so - that if copy-on-write is performed, we can swap them out for the new value */ - HashTable phar_persist_map; HashTable phar_fname_map; /* for cached phars, this is a per-process store of fp/ufp */ phar_entry_fp *cached_fp; @@ -273,31 +270,30 @@ typedef struct _phar_entry_info { php_stream *fp; php_stream *cfp; int fp_refcount; + int is_crc_checked:1; + int is_modified:1; + int is_deleted:1; + int is_dir:1; + /* this flag is used for mounted entries (external files mapped to location + inside a phar */ + int is_mounted:1; char *tmp; + /* used when iterating */ + int is_temp_dir:1; phar_archive_data *phar; smart_str metadata_str; + /* tar-based phar file stuff */ + int is_tar:1; char *link; /* symbolic link to another file */ char tar_type; + /* zip-based phar file stuff */ + int is_zip:1; + /* for cached phar entries */ + int is_persistent:1; /* position in the manifest */ uint manifest_pos; /* for stat */ unsigned short inode; - - unsigned int is_crc_checked:1; - unsigned int is_modified:1; - unsigned int is_deleted:1; - unsigned int is_dir:1; - /* this flag is used for mounted entries (external files mapped to location - inside a phar */ - unsigned int is_mounted:1; - /* used when iterating */ - unsigned int is_temp_dir:1; - /* tar-based phar file stuff */ - unsigned int is_tar:1; - /* zip-based phar file stuff */ - unsigned int is_zip:1; - /* for cached phar entries */ - unsigned int is_persistent:1; } phar_entry_info; /* information about a phar file (the archive itself) */ @@ -329,22 +325,22 @@ struct _phar_archive_data { char *signature; zval *metadata; int metadata_len; /* only used for cached manifests */ - uint phar_pos; /* if 1, then this alias was manually specified by the user and is not a permanent alias */ - unsigned int is_temporary_alias:1; - unsigned int is_modified:1; - unsigned int is_writeable:1; - unsigned int is_brandnew:1; + int is_temporary_alias:1; + int is_modified:1; + int is_writeable:1; + int is_brandnew:1; /* defer phar creation */ - unsigned int donotflush:1; + int donotflush:1; /* zip-based phar variables */ - unsigned int is_zip:1; + int is_zip:1; /* tar-based phar variables */ - unsigned int is_tar:1; + int is_tar:1; /* PharData variables */ - unsigned int is_data:1; + int is_data:1; /* for cached phar manifests */ - unsigned int is_persistent:1; + int is_persistent:1; + uint phar_pos; }; typedef struct _phar_entry_fp_info { @@ -558,7 +554,7 @@ static inline void phar_unixify_path_separators(char *path, int path_len) static inline int phar_validate_alias(const char *alias, int alias_len) /* {{{ */ { return !(memchr(alias, '/', alias_len) || memchr(alias, '\\', alias_len) || memchr(alias, ':', alias_len) || - memchr(alias, ';', alias_len) || memchr(alias, '\n', alias_len) || memchr(alias, '\r', alias_len)); + memchr(alias, ';', alias_len)); } /* }}} */ @@ -596,12 +592,12 @@ char *phar_create_default_stub(const char *index_php, const char *web_index, siz char *phar_decompress_filter(phar_entry_info * entry, int return_unknown); char *phar_compress_filter(phar_entry_info * entry, int return_unknown); -void phar_remove_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len TSRMLS_DC); void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len TSRMLS_DC); int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len, char *path, int path_len TSRMLS_DC); char *phar_find_in_include_path(char *file, int file_len, phar_archive_data **pphar TSRMLS_DC); char *phar_fix_filepath(char *path, int *new_len, int use_cwd TSRMLS_DC); -phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, char **error TSRMLS_DC); +phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, php_stream *fp, + char **error, int for_write TSRMLS_DC); int phar_parse_metadata(char **buffer, zval **metadata, int zip_metadata_len TSRMLS_DC); void destroy_phar_manifest_entry(void *pDest); int phar_seek_efp(phar_entry_info *entry, off_t offset, int whence, off_t position, int follow_links TSRMLS_DC); @@ -616,7 +612,7 @@ int phar_copy_on_write(phar_archive_data **pphar TSRMLS_DC); /* tar functions in tar.c */ int phar_is_tar(char *buf, char *fname); -int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, phar_archive_data** pphar, php_uint32 compression, char **error TSRMLS_DC); +int phar_parse_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, php_uint32 compression, char **error TSRMLS_DC); int phar_open_or_create_tar(char *fname, int fname_len, char *alias, int alias_len, int is_data, int options, phar_archive_data** pphar, char **error TSRMLS_DC); int phar_tar_flush(phar_archive_data *phar, char *user_stub, long len, int defaultstub, char **error TSRMLS_DC); |