cellog          Sun Jun 15 21:15:29 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/phar   phar.c phar.phar phar_internal.h phar_object.c 
  Log:
  minor optimization
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.c?r1=1.370.2.16&r2=1.370.2.17&diff_format=u
Index: php-src/ext/phar/phar.c
diff -u php-src/ext/phar/phar.c:1.370.2.16 php-src/ext/phar/phar.c:1.370.2.17
--- php-src/ext/phar/phar.c:1.370.2.16  Sun Jun 15 18:15:48 2008
+++ php-src/ext/phar/phar.c     Sun Jun 15 21:15:29 2008
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: phar.c,v 1.370.2.16 2008/06/15 18:15:48 cellog Exp $ */
+/* $Id: phar.c,v 1.370.2.17 2008/06/15 21:15:29 cellog Exp $ */
 
 #define PHAR_MAIN 1
 #include "phar_internal.h"
@@ -1148,11 +1148,11 @@
        }
 
        /* first try to open an existing file */
-       if (phar_detect_phar_fname_ext(fname, 1, &ext_str, &ext_len, !is_data, 
0, 1 TSRMLS_CC) == SUCCESS) {
+       if (phar_detect_phar_fname_ext(fname, fname_len, &ext_str, &ext_len, 
!is_data, 0, 1 TSRMLS_CC) == SUCCESS) {
                goto check_file;
        }
        /* next try to create a new file */
-       if (FAILURE == phar_detect_phar_fname_ext(fname, 1, &ext_str, &ext_len, 
!is_data, 1, 1 TSRMLS_CC)) {
+       if (FAILURE == phar_detect_phar_fname_ext(fname, fname_len, &ext_str, 
&ext_len, !is_data, 1, 1 TSRMLS_CC)) {
                if (error) {
                        spprintf(error, 0, "Cannot create phar '%s', file 
extension (or combination) not recognised", fname);
                }
@@ -1712,10 +1712,9 @@
  * the last parameter should be set to tell the thing to assume that filename 
is the full path, and only to check the
  * extension rules, not to iterate.
  */
-int phar_detect_phar_fname_ext(const char *filename, int check_length, const 
char **ext_str, int *ext_len, int executable, int for_create, int is_complete 
TSRMLS_DC) /* {{{ */
+int phar_detect_phar_fname_ext(const char *filename, int filename_len, const 
char **ext_str, int *ext_len, int executable, int for_create, int is_complete 
TSRMLS_DC) /* {{{ */
 {
        const char *pos, *slash;
-       int filename_len = strlen(filename);
 
        *ext_str = NULL;
 
@@ -1724,7 +1723,7 @@
        }
        phar_request_initialize(TSRMLS_C);
        /* first check for alias in first segment */
-       pos = strchr(filename, '/');
+       pos = memchr(filename, '/', filename_len);
        if (pos && pos != filename) {
                if (zend_hash_exists(&(PHAR_GLOBALS->phar_alias_map), (char *) 
filename, pos - filename)) {
                        *ext_str = pos;
@@ -1783,19 +1782,19 @@
                }
        }
 
-       pos = strchr(filename + 1, '.');
+       pos = memchr(filename + 1, '.', filename_len);
 next_extension:
        if (!pos) {
                return FAILURE;
        }
        while (pos != filename && (*(pos - 1) == '/' || *(pos - 1) == '\0')) {
-               pos = strchr(pos + 1, '.');
+               pos = memchr(pos + 1, '.', filename_len - (pos - filename) + 1);
                if (!pos) {
                        return FAILURE;
                }
        }
 
-       slash = strchr(pos, '/');
+       slash = memchr(pos, '/', filename_len - (pos - filename));
        if (!slash) {
                /* this is a url like "phar://blah.phar" with no directory */
                *ext_str = pos;
@@ -1997,7 +1996,7 @@
        filename = estrndup(filename, filename_len);
        phar_unixify_path_separators(filename, filename_len);
 #endif
-       if (phar_detect_phar_fname_ext(filename, 0, &ext_str, &ext_len, 
executable, for_create, 0 TSRMLS_CC) == FAILURE) {
+       if (phar_detect_phar_fname_ext(filename, filename_len, &ext_str, 
&ext_len, executable, for_create, 0 TSRMLS_CC) == FAILURE) {
                if (ext_len != -1) {
                        if (!ext_str) {
                                /* no / detected, restore arch for error 
message */
@@ -3398,7 +3397,7 @@
        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 API version", PHP_PHAR_API_VERSION);
-       php_info_print_table_row(2, "CVS revision", "$Revision: 1.370.2.16 $");
+       php_info_print_table_row(2, "CVS revision", "$Revision: 1.370.2.17 $");
        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, "ZIP-based phar archives", "enabled");
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.15&r2=1.7.2.16&diff_format=u
Index: php-src/ext/phar/phar.phar
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_internal.h?r1=1.109.2.12&r2=1.109.2.13&diff_format=u
Index: php-src/ext/phar/phar_internal.h
diff -u php-src/ext/phar/phar_internal.h:1.109.2.12 
php-src/ext/phar/phar_internal.h:1.109.2.13
--- php-src/ext/phar/phar_internal.h:1.109.2.12 Sun Jun 15 18:15:48 2008
+++ php-src/ext/phar/phar_internal.h    Sun Jun 15 21:15:29 2008
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: phar_internal.h,v 1.109.2.12 2008/06/15 18:15:48 cellog Exp $ */
+/* $Id: phar_internal.h,v 1.109.2.13 2008/06/15 21:15:29 cellog Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -472,7 +472,7 @@
 phar_entry_data *phar_get_or_create_entry_data(char *fname, int fname_len, 
char *path, int path_len, char *mode, char allow_dir, char **error, int 
security TSRMLS_DC);
 int phar_get_entry_data(phar_entry_data **ret, char *fname, int fname_len, 
char *path, int path_len, char *mode, char allow_dir, char **error, int 
security TSRMLS_DC);
 int phar_flush(phar_archive_data *archive, char *user_stub, long len, int 
convert, char **error TSRMLS_DC);
-int phar_detect_phar_fname_ext(const char *filename, int check_length, const 
char **ext_str, int *ext_len, int executable, int for_create, int is_complete 
TSRMLS_DC);
+int phar_detect_phar_fname_ext(const char *filename, int filename_len, const 
char **ext_str, int *ext_len, int executable, int for_create, int is_complete 
TSRMLS_DC);
 int phar_split_fname(char *filename, int filename_len, char **arch, int 
*arch_len, char **entry, int *entry_len, int executable, int for_create 
TSRMLS_DC);
 
 typedef enum {
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.20&r2=1.266.2.21&diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.20 
php-src/ext/phar/phar_object.c:1.266.2.21
--- php-src/ext/phar/phar_object.c:1.266.2.20   Sun Jun 15 18:15:48 2008
+++ php-src/ext/phar/phar_object.c      Sun Jun 15 21:15:29 2008
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: phar_object.c,v 1.266.2.20 2008/06/15 18:15:48 cellog Exp $ */
+/* $Id: phar_object.c,v 1.266.2.21 2008/06/15 21:15:29 cellog Exp $ */
 
 #include "phar_internal.h"
 #include "func_interceptors.h"
@@ -1064,15 +1064,15 @@
 {
        char *fname;
        const char *ext_str;
-       int fname_len, ext_len;
+       int fname_len, ext_len, is_executable;
        zend_bool executable = 1;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &fname, 
&fname_len, &executable) == FAILURE) {
                return;
        }
 
-       fname_len = executable;
-       RETVAL_BOOL(phar_detect_phar_fname_ext(fname, 1, &ext_str, &ext_len, 
fname_len, 2, 1 TSRMLS_CC) == SUCCESS);
+       is_executable = executable;
+       RETVAL_BOOL(phar_detect_phar_fname_ext(fname, fname_len, &ext_str, 
&ext_len, is_executable, 2, 1 TSRMLS_CC) == SUCCESS);
 }
 /* }}} */
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to