Diff for /embedaddon/php/ext/phar/phar.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 23:47:59 version 1.1.1.2, 2012/05/29 12:34:41
Line 1738  static int phar_open_from_fp(php_stream* fp, char *fna Line 1738  static int phar_open_from_fp(php_stream* fp, char *fna
 static int phar_analyze_path(const char *fname, const char *ext, int ext_len, int for_create TSRMLS_DC) /* {{{ */  static int phar_analyze_path(const char *fname, const char *ext, int ext_len, int for_create TSRMLS_DC) /* {{{ */
 {  {
         php_stream_statbuf ssb;          php_stream_statbuf ssb;
        char *realpath, old, *a = (char *)(ext + ext_len);        char *realpath;
         char *filename = estrndup(fname, (ext - fname) + ext_len);
   
        old = *a;        if ((realpath = expand_filepath(filename, NULL TSRMLS_CC))) {
        *a = '\0'; 
 
        if ((realpath = expand_filepath(fname, NULL TSRMLS_CC))) { 
 #ifdef PHP_WIN32  #ifdef PHP_WIN32
                 phar_unixify_path_separators(realpath, strlen(realpath));                  phar_unixify_path_separators(realpath, strlen(realpath));
 #endif  #endif
                 if (zend_hash_exists(&(PHAR_GLOBALS->phar_fname_map), realpath, strlen(realpath))) {                  if (zend_hash_exists(&(PHAR_GLOBALS->phar_fname_map), realpath, strlen(realpath))) {
                         *a = old;  
                         efree(realpath);                          efree(realpath);
                           efree(filename);
                         return SUCCESS;                          return SUCCESS;
                 }                  }
   
                 if (PHAR_G(manifest_cached) && zend_hash_exists(&cached_phars, realpath, strlen(realpath))) {                  if (PHAR_G(manifest_cached) && zend_hash_exists(&cached_phars, realpath, strlen(realpath))) {
                         *a = old;  
                         efree(realpath);                          efree(realpath);
                           efree(filename);
                         return SUCCESS;                          return SUCCESS;
                 }                  }
                 efree(realpath);                  efree(realpath);
         }          }
   
        if (SUCCESS == php_stream_stat_path((char *) fname, &ssb)) {        if (SUCCESS == php_stream_stat_path((char *) filename, &ssb)) {
                *a = old; 
   
                   efree(filename);
   
                 if (ssb.sb.st_mode & S_IFDIR) {                  if (ssb.sb.st_mode & S_IFDIR) {
                         return FAILURE;                          return FAILURE;
                 }                  }
Line 1777  static int phar_analyze_path(const char *fname, const  Line 1776  static int phar_analyze_path(const char *fname, const 
                 char *slash;                  char *slash;
   
                 if (!for_create) {                  if (!for_create) {
                        *a = old;                        efree(filename);
                         return FAILURE;                          return FAILURE;
                 }                  }
   
                slash = (char *) strrchr(fname, '/');                slash = (char *) strrchr(filename, '/');
                *a = old; 
   
                 if (slash) {                  if (slash) {
                         old = *slash;  
                         *slash = '\0';                          *slash = '\0';
                 }                  }
   
                if (SUCCESS != php_stream_stat_path((char *) fname, &ssb)) {                if (SUCCESS != php_stream_stat_path((char *) filename, &ssb)) {
                        if (slash) {                        if (!slash) {
                                *slash = old;                                if (!(realpath = expand_filepath(filename, NULL TSRMLS_CC))) {
                        } else {                                        efree(filename);
                                if (!(realpath = expand_filepath(fname, NULL TSRMLS_CC))) { 
                                         return FAILURE;                                          return FAILURE;
                                 }                                  }
 #ifdef PHP_WIN32  #ifdef PHP_WIN32
                                 phar_unixify_path_separators(realpath, strlen(realpath));                                  phar_unixify_path_separators(realpath, strlen(realpath));
 #endif  #endif
                                a = strstr(realpath, fname) + ((ext - fname) + ext_len);                                slash = strstr(realpath, filename) + ((ext - fname) + ext_len);
                                *a = '\0';                                *slash = '\0';
                                 slash = strrchr(realpath, '/');                                  slash = strrchr(realpath, '/');
   
                                 if (slash) {                                  if (slash) {
                                         *slash = '\0';                                          *slash = '\0';
                                 } else {                                  } else {
                                         efree(realpath);                                          efree(realpath);
                                           efree(filename);
                                         return FAILURE;                                          return FAILURE;
                                 }                                  }
   
                                 if (SUCCESS != php_stream_stat_path(realpath, &ssb)) {                                  if (SUCCESS != php_stream_stat_path(realpath, &ssb)) {
                                         efree(realpath);                                          efree(realpath);
                                           efree(filename);
                                         return FAILURE;                                          return FAILURE;
                                 }                                  }
   
                                 efree(realpath);                                  efree(realpath);
   
                                 if (ssb.sb.st_mode & S_IFDIR) {                                  if (ssb.sb.st_mode & S_IFDIR) {
                                           efree(filename);
                                         return SUCCESS;                                          return SUCCESS;
                                 }                                  }
                         }                          }
   
                           efree(filename);
                         return FAILURE;                          return FAILURE;
                 }                  }
   
                if (slash) {                efree(filename);
                        *slash = old; 
                } 
   
                 if (ssb.sb.st_mode & S_IFDIR) {                  if (ssb.sb.st_mode & S_IFDIR) {
                         return SUCCESS;                          return SUCCESS;
Line 2335  int phar_open_executed_filename(char *alias, int alias Line 2333  int phar_open_executed_filename(char *alias, int alias
                 *error = NULL;                  *error = NULL;
         }          }
   
        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_parsed_phar(fname, fname_len, alias, alias_len, 0, REPORT_ERRORS, NULL, 0 TSRMLS_CC) == SUCCESS) {          if (phar_open_parsed_phar(fname, fname_len, alias, alias_len, 0, REPORT_ERRORS, NULL, 0 TSRMLS_CC) == SUCCESS) {
Line 3340  static zend_op_array *phar_compile_file(zend_file_hand Line 3338  static zend_op_array *phar_compile_file(zend_file_hand
                 return phar_orig_compile_file(file_handle, type TSRMLS_CC);                  return phar_orig_compile_file(file_handle, type TSRMLS_CC);
         }          }
         if (strstr(file_handle->filename, ".phar") && !strstr(file_handle->filename, "://")) {          if (strstr(file_handle->filename, ".phar") && !strstr(file_handle->filename, "://")) {
                if (SUCCESS == phar_open_from_filename(file_handle->filename, strlen(file_handle->filename), NULL, 0, 0, &phar, NULL TSRMLS_CC)) {                if (SUCCESS == phar_open_from_filename((char*)file_handle->filename, strlen(file_handle->filename), NULL, 0, 0, &phar, NULL TSRMLS_CC)) {
                         if (phar->is_zip || phar->is_tar) {                          if (phar->is_zip || phar->is_tar) {
                                 zend_file_handle f = *file_handle;                                  zend_file_handle f = *file_handle;
   
Line 3421  int phar_zend_open(const char *filename, zend_file_han Line 3419  int phar_zend_open(const char *filename, zend_file_han
                 char *fname;                  char *fname;
                 int fname_len;                  int fname_len;
   
                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 && !strncasecmp(fname, "phar://", 7)) {                  if (fname_len > 7 && !strncasecmp(fname, "phar://", 7)) {
Line 3669  PHP_MINFO_FUNCTION(phar) /* {{{ */ Line 3667  PHP_MINFO_FUNCTION(phar) /* {{{ */
         php_info_print_table_header(2, "Phar: PHP Archive support", "enabled");          php_info_print_table_header(2, "Phar: PHP Archive support", "enabled");
         php_info_print_table_row(2, "Phar EXT version", PHP_PHAR_VERSION);          php_info_print_table_row(2, "Phar EXT version", PHP_PHAR_VERSION);
         php_info_print_table_row(2, "Phar API version", PHP_PHAR_API_VERSION);          php_info_print_table_row(2, "Phar API version", PHP_PHAR_API_VERSION);
        php_info_print_table_row(2, "SVN revision", "$Revision$");        php_info_print_table_row(2, "SVN revision", "$Id$");
         php_info_print_table_row(2, "Phar-based phar archives", "enabled");          php_info_print_table_row(2, "Phar-based phar archives", "enabled");
         php_info_print_table_row(2, "Tar-based phar archives", "enabled");          php_info_print_table_row(2, "Tar-based phar archives", "enabled");
         php_info_print_table_row(2, "ZIP-based phar archives", "enabled");          php_info_print_table_row(2, "ZIP-based phar archives", "enabled");

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>