static int merge_token(token_t *t, glw_root_t *gr, token_t **p, token_t **fp, const token_attrib_t *a) { if(*fp == NULL) { *fp = t; if(t->t_int) { t->t_set = t->t_attrib->attrib; t->t_clr = 0; } else { t->t_set = 0; t->t_clr = t->t_attrib->attrib; } t->t_attrib = a; t->type = TOKEN_MOD_FLAGS; return 0; } else { if(t->t_int) { (*fp)->t_set |= t->t_attrib->attrib; } else { (*fp)->t_clr |= t->t_attrib->attrib; } *p = t->next; glw_view_token_free(gr, t); return 1; } }
static void glw_view_free_chain2(glw_root_t *gr, token_t *t, int indent) { token_t *n; for(; t != NULL; t = n) { n = t->next; if(t->child != NULL) glw_view_free_chain2(gr, t->child, indent + 2); // printf("%*.sFree: %p\n", indent, "", t); // printf("%*.sFree: %s\n", indent, "", token2name(t)); glw_view_token_free(gr, t); } }