void endElementNs(void *ctx, const xmlChar *localname, const xmlChar *prefix, const xmlChar *URI) { parse_context_t* context = (parse_context_t*) ctx; if (xmlStrEqual(localname, ELEM_DEVICE)) { end_device(context); } else if (xmlStrEqual(localname, ELEM_CAPABILITY)) { end_capability(context); } else { // ignore other } }
static C_RESULT parse_proc_input_devices(FILE* f, const int32_t id) { C_RESULT res = C_FAIL; next_c = '\0'; vp_os_memset( ¤t_device, 0, sizeof(device_t) ); while( res != C_OK && SUCCEED( fetch_char(f) ) ) { switch( next_c ) { case 'I': parse_I(f); break; case 'N': parse_N(f); break; case 'H': if( SUCCEED( parse_H(f) ) ) res = end_device(id); break; case 'P': case 'S': case 'B': default: skip_line(f); break; } } return res; }