summaryrefslogtreecommitdiff
path: root/ext/phar/phar_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'ext/phar/phar_internal.h')
-rwxr-xr-xext/phar/phar_internal.h64
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);