cvs: php-src(PHP_5_3) /ext/phar dirstream.c phar.phar stream.c

From: Date: Sat, 30 Aug 2008 23:47:55 +0000
Subject: cvs: php-src(PHP_5_3) /ext/phar dirstream.c phar.phar stream.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-52797@lists.php.net to get a copy of this message
cellog Sat Aug 30 23:47:55 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/phar dirstream.c phar.phar stream.c Log: sync with pecl/phar, this does not change any functionality in PHP 5.3, but makes syncing easier. This commit is only functional changes, WS will be next http://cvs.php.net/viewvc.cgi/php-src/ext/phar/dirstream.c?r1=1.26.2.8&r2=1.26.2.9&diff_format=u Index: php-src/ext/phar/dirstream.c diff -u php-src/ext/phar/dirstream.c:1.26.2.8 php-src/ext/phar/dirstream.c:1.26.2.9 --- php-src/ext/phar/dirstream.c:1.26.2.8 Fri Aug 1 13:48:44 2008 +++ php-src/ext/phar/dirstream.c Sat Aug 30 23:47:55 2008 @@ -569,8 +569,8 @@ int arch_len, entry_len; php_url *resource = NULL; uint host_len; - int key_type; - char *key; + phar_zstr key; + char *str_key; uint key_len; ulong unused; uint path_len; @@ -640,9 +640,11 @@ } for (zend_hash_internal_pointer_reset(&phar->manifest); - HASH_KEY_NON_EXISTANT != (key_type = zend_hash_get_current_key_ex(&phar->manifest, &key, &key_len, &unused, 0, NULL)); + HASH_KEY_NON_EXISTANT != zend_hash_get_current_key_ex(&phar->manifest, &key, &key_len, &unused, 0, NULL); zend_hash_move_forward(&phar->manifest)) { + PHAR_STR(key, str_key); + if (!entry->is_deleted && key_len > path_len && memcmp(key, resource->path+1, path_len) == 0 && @@ -658,13 +660,15 @@ } for (zend_hash_internal_pointer_reset(&phar->virtual_dirs); - HASH_KEY_NON_EXISTANT != (key_type = zend_hash_get_current_key_ex(&phar->virtual_dirs, &key, &key_len, &unused, 0, NULL)); + HASH_KEY_NON_EXISTANT != zend_hash_get_current_key_ex(&phar->virtual_dirs, &key, &key_len, &unused, 0, NULL); zend_hash_move_forward(&phar->virtual_dirs)) { + PHAR_STR(key, str_key); + if (!entry->is_deleted && key_len > path_len && - memcmp(key, resource->path+1, path_len) == 0 && - IS_SLASH(key[path_len])) { + memcmp(str_key, resource->path+1, path_len) == 0 && + IS_SLASH(str_key[path_len])) { php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "phar error: Directory not empty"); if (entry->is_temp_dir) { efree(entry->filename); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.31&r2=1.7.2.32&diff_format=u Index: php-src/ext/phar/phar.phar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/stream.c?r1=1.27.2.14&r2=1.27.2.15&diff_format=u Index: php-src/ext/phar/stream.c diff -u php-src/ext/phar/stream.c:1.27.2.14 php-src/ext/phar/stream.c:1.27.2.15 --- php-src/ext/phar/stream.c:1.27.2.14 Thu Aug 21 05:17:27 2008 +++ php-src/ext/phar/stream.c Sat Aug 30 23:47:55 2008 @@ -886,7 +886,8 @@ /* Rename directory. Update all nested paths */ if (is_dir) { int key_type; - char *key, *new_key; + phar_zstr key, new_key; + char *str_key, *new_str_key; uint key_len, new_key_len; ulong unused; uint from_len = strlen(resource_from->path+1); @@ -897,22 +898,31 @@ SUCCESS == zend_hash_get_current_data(&phar->manifest, (void **) &entry); zend_hash_move_forward(&phar->manifest)) { + PHAR_STR(key, str_key); + if (!entry->is_deleted && key_len > from_len && - memcmp(key, resource_from->path+1, from_len) == 0 && - IS_SLASH(key[from_len])) { + memcmp(str_key, resource_from->path+1, from_len) == 0 && + IS_SLASH(str_key[from_len])) { new_key_len = key_len + to_len - from_len; - new_key = emalloc(new_key_len+1); - memcpy(new_key, resource_to->path + 1, to_len); - memcpy(new_key + to_len, key + from_len, key_len - from_len); - new_key[new_key_len] = 0; + new_str_key = emalloc(new_key_len+1); + memcpy(new_str_key, resource_to->path + 1, to_len); + memcpy(new_str_key + to_len, str_key + from_len, key_len - from_len); + new_str_key[new_key_len] = 0; is_modified = 1; entry->is_modified = 1; efree(entry->filename); - entry->filename = new_key; + entry->filename = new_str_key; entry->filename_len = new_key_len; + + PHAR_ZSTR(new_str_key, new_key); + +#if PHP_VERSION_ID < 50300 + zend_hash_update_current_key_ex(&phar->manifest, key_type, new_key, new_key_len, 0, NULL); +#else zend_hash_update_current_key_ex(&phar->manifest, key_type, new_key, new_key_len, 0, HASH_UPDATE_KEY_ANYWAY, NULL); +#endif } } @@ -920,17 +930,25 @@ HASH_KEY_NON_EXISTANT != (key_type = zend_hash_get_current_key_ex(&phar->virtual_dirs, &key, &key_len, &unused, 0, NULL)); zend_hash_move_forward(&phar->virtual_dirs)) { + PHAR_STR(key, str_key); + if (key_len >= from_len && - memcmp(key, resource_from->path+1, from_len) == 0 && - (key_len == from_len || IS_SLASH(key[from_len]))) { + memcmp(str_key, resource_from->path+1, from_len) == 0 && + (key_len == from_len || IS_SLASH(str_key[from_len]))) { new_key_len = key_len + to_len - from_len; - new_key = emalloc(new_key_len+1); - memcpy(new_key, resource_to->path + 1, to_len); - memcpy(new_key + to_len, key + from_len, key_len - from_len); - new_key[new_key_len] = 0; + new_str_key = emalloc(new_key_len+1); + memcpy(new_str_key, resource_to->path + 1, to_len); + memcpy(new_str_key + to_len, str_key + from_len, key_len - from_len); + new_str_key[new_key_len] = 0; + + PHAR_ZSTR(new_str_key, new_key); +#if PHP_VERSION_ID < 50300 + zend_hash_update_current_key_ex(&phar->virtual_dirs, key_type, new_key, new_key_len, 0, NULL); +#else zend_hash_update_current_key_ex(&phar->virtual_dirs, key_type, new_key, new_key_len, 0, HASH_UPDATE_KEY_ANYWAY, NULL); - efree(new_key); +#endif + efree(new_str_key); } } @@ -939,17 +957,25 @@ SUCCESS == zend_hash_get_current_data(&phar->mounted_dirs, (void **) &entry); zend_hash_move_forward(&phar->mounted_dirs)) { + PHAR_STR(key, str_key); + if (key_len >= from_len && - memcmp(key, resource_from->path+1, from_len) == 0 && - (key_len == from_len || IS_SLASH(key[from_len]))) { + memcmp(str_key, resource_from->path+1, from_len) == 0 && + (key_len == from_len || IS_SLASH(str_key[from_len]))) { new_key_len = key_len + to_len - from_len; - new_key = emalloc(new_key_len+1); - memcpy(new_key, resource_to->path + 1, to_len); - memcpy(new_key + to_len, key + from_len, key_len - from_len); - new_key[new_key_len] = 0; + new_str_key = emalloc(new_key_len+1); + memcpy(new_str_key, resource_to->path + 1, to_len); + memcpy(new_str_key + to_len, str_key + from_len, key_len - from_len); + new_str_key[new_key_len] = 0; + + PHAR_ZSTR(new_str_key, new_key); +#if PHP_VERSION_ID < 50300 + zend_hash_update_current_key_ex(&phar->mounted_dirs, key_type, new_key, new_key_len, 0, NULL); +#else zend_hash_update_current_key_ex(&phar->mounted_dirs, key_type, new_key, new_key_len, 0, HASH_UPDATE_KEY_ANYWAY, NULL); - efree(new_key); +#endif + efree(new_str_key); } } }

« previous php.cvs (#52797) next »