Changeset 864 in svn


Ignore:
Timestamp:
2012-03-29T05:51:14Z (3 years ago)
Author:
Xuefer
Message:

handle opened_path in 1 place

Location:
trunk
Files:
6 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/xcache.c

    r862 r864  
    199199            }
    200200#endif
     201
     202#ifdef IS_UNICODE
     203            if (entry1->name_type == IS_UNICODE) {
     204                assert(IS_ABSOLUTE_PATH(entry1->name.ustr.val, entry1->name.ustr.len));
     205            }
     206            else
     207#endif
     208            {
     209                assert(IS_ABSOLUTE_PATH(entry1->name.str.val, entry1->name.str.len));
     210            }
     211
     212#ifdef IS_UNICODE
     213            if (entry2->name_type == IS_UNICODE) {
     214                assert(IS_ABSOLUTE_PATH(entry2->name.ustr.val, entry2->name.ustr.len));
     215            }
     216            else
     217#endif
     218            {
     219                assert(IS_ABSOLUTE_PATH(entry2->name.str.val, entry2->name.str.len));
     220            }
    201221            /* fall */
    202222
     
    204224            do {
    205225#ifdef IS_UNICODE
    206                 if (entry1->name_type == IS_UNICODE) {
     226                if (entry1->name_type != entry2->name_type) {
     227                    return 0;
     228                }
     229                else if (entry1->name_type == IS_UNICODE) {
    207230                    if (entry1->name.ustr.len != entry2->name.ustr.len) {
    208231                        return 0;
     
    210233                    return memcmp(entry1->name.ustr.val, entry2->name.ustr.val, (entry1->name.ustr.len + 1) * sizeof(UChar)) == 0;
    211234                }
    212 #endif
    213                 if (entry1->name.str.len != entry2->name.str.len) {
    214                     return 0;
     235                else
     236#endif
     237                {
     238                    if (entry1->name.str.len != entry2->name.str.len) {
     239                        return 0;
     240                    }
     241                    return memcmp(entry1->name.str.val, entry2->name.str.val, entry1->name.str.len + 1) == 0;
    215242                }
    216                 return memcmp(entry1->name.str.val, entry2->name.str.val, entry1->name.str.len + 1) == 0;
    217243
    218244            } while(0);
     
    973999/* }}} */
    9741000
    975 static int xc_entry_init_key_php(xc_compiler_t *compiler TSRMLS_DC) /* {{{ */
    976 {
    977     if (!compiler->filename || !SG(request_info).path_translated) {
    978         return FAILURE;
    979     }
    980 
    981     if (strstr(compiler->filename, "://") != NULL) {
    982         return FAILURE;
    983     }
    984 
     1001static int xc_entry_php_resolve_opened_path(xc_compiler_t *compiler TSRMLS_DC) /* {{{ */
     1002{
     1003    assert(!compiler->opened_path);
     1004    compiler->opened_path = expand_filepath(compiler->filename, compiler->opened_path_buffer TSRMLS_CC);
     1005    return SUCCESS;
     1006}
     1007/* }}} */
     1008static int xc_entry_php_init_key(xc_compiler_t *compiler TSRMLS_DC) /* {{{ */
     1009{
    9851010    if (XG(stat)) {
    9861011        struct stat buf, *pbuf;
     
    10491074        compiler->new_entry.file_inode   = 0;
    10501075#endif
    1051         compiler->opened_path = expand_filepath(compiler->filename, compiler->opened_path_buffer TSRMLS_CC);
     1076    }
     1077
     1078    if (!compiler->new_entry.file_inode) {
     1079        if (!compiler->opened_path) {
     1080            xc_entry_php_resolve_opened_path(compiler TSRMLS_CC);
     1081        }
    10521082    }
    10531083
     
    10941124}
    10951125/* }}} */
    1096 static int xc_entry_init_key_php_md5(xc_cache_t *cache, xc_compiler_t *compiler TSRMLS_DC) /* {{{ */
     1126static int xc_entry_data_php_init_md5(xc_cache_t *cache, xc_compiler_t *compiler TSRMLS_DC) /* {{{ */
    10971127{
    10981128    unsigned char   buf[1024];
     
    11341164}
    11351165/* }}} */
    1136 static void xc_entry_init_key_php_entry(xc_entry_php_t *entry_php, const char *filepath TSRMLS_DC) /* {{{*/
     1166static void xc_entry_php_init(xc_entry_php_t *entry_php, const char *filepath TSRMLS_DC) /* {{{*/
    11371167{
    11381168    entry_php->filepath     = ZEND_24((char *), NOTHING) filepath;
     
    16351665        unsigned int i;
    16361666
    1637         xc_entry_init_key_php_entry(&compiler->new_entry, zend_get_compiled_filename(TSRMLS_C) TSRMLS_CC);
     1667        xc_entry_php_init(&compiler->new_entry, zend_get_compiled_filename(TSRMLS_C) TSRMLS_CC);
    16381668        memset(&const_usage, 0, sizeof(const_usage));
    16391669
     
    18251855        TRACE("miss entry %d:%s", compiler->new_entry.file_inode, compiler->new_entry.entry.name.str.val);
    18261856
    1827         if (xc_entry_init_key_php_md5(cache, compiler TSRMLS_CC) != SUCCESS) {
     1857        if (xc_entry_data_php_init_md5(cache, compiler TSRMLS_CC) != SUCCESS) {
    18281858            gaveup = 1;
    18291859            break;
     
    18321862        stored_php = xc_php_find_dmz(cache, &compiler->new_php TSRMLS_CC);
    18331863
    1834         /* miss but compiling */
    18351864        if (stored_php) {
    18361865            compiler->new_entry.php = stored_php;
    18371866            xc_php_addref_dmz(stored_php);
    18381867            if (!compiler->opened_path) {
    1839                 compiler->opened_path = expand_filepath(compiler->filename, compiler->opened_path_buffer TSRMLS_CC);
    1840             }
    1841             xc_entry_init_key_php_entry(&compiler->new_entry, compiler->opened_path TSRMLS_CC);
     1868                xc_entry_php_resolve_opened_path(compiler TSRMLS_CC);
     1869            }
     1870            xc_entry_php_init(&compiler->new_entry, compiler->opened_path TSRMLS_CC);
    18421871            stored_entry = xc_entry_php_store_dmz(cache, compiler->entry_hash.entryslotid, &compiler->new_entry TSRMLS_CC);
    18431872            TRACE(" cached %d:%s, holding", compiler->new_entry.file_inode, stored_entry->entry.name.str.val);
     
    19782007
    19792008    TRACE("xc_compile_file: type=%d name=%s", h->type, h->filename ? h->filename : "NULL");
    1980     if (!XG(cacher)) {
     2009
     2010    if (!XG(cacher)
     2011     || !h->filename
     2012     || !SG(request_info).path_translated
     2013     || strstr(h->filename, "://") != NULL) {
    19812014        op_array = old_compile_file(h, type TSRMLS_CC);
    19822015        TRACE("%s", "cacher not enabled");
     
    19872020    compiler.opened_path = h->opened_path;
    19882021    compiler.filename = compiler.opened_path ? compiler.opened_path : h->filename;
    1989     if (xc_entry_init_key_php(&compiler TSRMLS_CC) != SUCCESS) {
     2022    if (xc_entry_php_init_key(&compiler TSRMLS_CC) != SUCCESS) {
    19902023        TRACE("failed to init key for %s", compiler.filename);
    19912024        return old_compile_file(h, type TSRMLS_CC);
     
    26312664    xc_hash_value_t hv;
    26322665
     2666    switch (name->type) {
    26332667#ifdef IS_UNICODE
    2634     convert_to_unicode(name);
     2668        case IS_UNICODE:
     2669        case IS_STRING:
     2670#endif
     2671        default:
     2672#ifdef IS_UNICODE
     2673            convert_to_unicode(name);
    26352674#else
    2636     convert_to_string(name);
    2637 #endif
     2675            convert_to_string(name);
     2676#endif
     2677    }
    26382678
    26392679#ifdef IS_UNICODE
Note: See TracChangeset for help on using the changeset viewer.