static void start_element(void *userData,const char *name,const char **attrs) { if(current!=rn_notAllowed) { mixed=1; flush_text(); ok=rnv_start_tag(¤t,&previous,(char*)name,(char**)attrs)&&ok; mixed=0; any=any||ary_isany(current); } }
} static void error_handler(int erno,...) { va_list ap; va_start(ap,erno); verror_handler(erno,ap); va_end(ap); } static void flush_text(void) { ok=rnv_text(¤t,&previous,text,n_txt,mixed)&&ok; text[n_txt=0]='\0'; } static void start_element(__attribute__ ((unused)) void *userData,const char *name,const char **attrs) { if(current!=rn_notAllowed) { mixed=1; flush_text(); ok=rnv_start_tag(¤t,&previous,(char*)name,(char**)attrs)&&ok; mixed=0; } else { ++level; } } static void end_element(__attribute__ ((unused)) void *userData,const char *name) { if(current!=rn_notAllowed) { flush_text(); ok=rnv_end_tag(¤t,&previous,(char*)name)&&ok; mixed=1; } else { if(level==0) current=previous; else --level; } }