void sprite_load_meta_file(char* filename, DArray *meta_info) { FILE *file = fopen ( filename, "r" ); char line[LINE_BUFF_SIZE]; char* pch; memset(line, '\0', LINE_BUFF_SIZE); darray_init(meta_info); if ( file != NULL ) { while(fgets(line, sizeof line, file) != NULL) { int val = 0; fputs (line, stdout); pch = strtok (line," ,.-"); val = atoi(pch); darray_add(meta_info, val); while(pch != NULL) { //printf ("%i\n",val); pch = strtok (NULL, " ,.-"); if(pch != NULL) { val = atoi(pch); darray_add(meta_info, val); } } } fclose(file); } else { perror(filename); } }
// Update constant value. Returns current count of constant values found and updates tree static int update_cvalue(const expr *ex, cvalue_list *l) { cvalue val; memset(&val, 0, sizeof(val)); if( expr_is_cnum(ex) ) { val.num = ex->num; } else if( expr_is_cstr(ex) ) { val.str = ex->str; val.slen = ex->slen; } else if( ex ) return update_cvalue(ex->lft, l) + update_cvalue(ex->rgt, l); else return 0; cvalue *n = cvalue_list_find(l, &val); if( n ) { n->count ++; return 0; } else { // Insert new value with count == 1 val.count = 1; darray_add(l, val); return 1; } }