Changeset 864 for trunk/xcache.c


Ignore:
Timestamp:
2012-03-29T07:51:14+02:00 (3 years ago)
Author:
moo
Message:

handle opened_path in 1 place

File:
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.