Ignore:
Timestamp:
2011-04-09T12:22:14+02:00 (4 years ago)
Author:
moo
Message:

runtime check for field list assertion to tell which is mismatch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/head.m4

    r690 r719  
    306306} 
    307307/* }}} */ 
     308/* {{{ field name checker */ 
     309IFASSERT(`dnl 
     310int xc_check_names(const char *file, int line, const char *functionName, const char **assert_names, int assert_names_count, HashTable *done_names) 
     311{ 
     312    int errors = 0; 
     313    if (assert_names_count) { 
     314        int i; 
     315        Bucket *b; 
     316 
     317        for (i = 0; i < assert_names_count; ++i) { 
     318            if (!zend_hash_exists(done_names, assert_names[i], strlen(assert_names[i]) + 1)) { 
     319                fprintf(stderr 
     320                    , "missing field at %s `#'%d %s`' : %s\n" 
     321                    , file, line, functionName 
     322                    , assert_names[i] 
     323                    ); 
     324                ++errors; 
     325            } 
     326        } 
     327 
     328        for (b = done_names->pListHead; b != NULL; b = b->pListNext) { 
     329            int known = 0; 
     330            int i; 
     331            for (i = 0; i < assert_names_count; ++i) { 
     332                if (strcmp(assert_names[i], BUCKET_KEY_S(b)) == 0) { 
     333                    known = 1; 
     334                    break; 
     335                } 
     336            } 
     337            if (!known) { 
     338                fprintf(stderr 
     339                    , "unknown field at %s `#'%d %s`' : %s\n" 
     340                    , file, line, functionName 
     341                    , BUCKET_KEY_S(b) 
     342                    ); 
     343                ++errors; 
     344            } 
     345        } 
     346    } 
     347    return errors; 
     348} 
     349') 
     350/* }}} */ 
    308351dnl ================ export API 
    309352define(`DEFINE_STORE_API', ` 
Note: See TracChangeset for help on using the changeset viewer.