static svn_error_t * start_element(svn_ra_serf__xml_parser_t *parser, void *userData, svn_ra_serf__dav_props_t name, const char **attrs) { mergeinfo_context_t *mergeinfo_ctx = userData; mergeinfo_state_e state; state = parser->state->current_state; if (state == NONE && strcmp(name.name, SVN_DAV__MERGEINFO_REPORT) == 0) { svn_ra_serf__xml_push_state(parser, MERGEINFO_REPORT); } else if (state == MERGEINFO_REPORT && strcmp(name.name, SVN_DAV__MERGEINFO_ITEM) == 0) { svn_ra_serf__xml_push_state(parser, MERGEINFO_ITEM); svn_stringbuf_setempty(mergeinfo_ctx->curr_path); svn_stringbuf_setempty(mergeinfo_ctx->curr_info); } else if (state == MERGEINFO_ITEM && strcmp(name.name, SVN_DAV__MERGEINFO_PATH) == 0) { svn_ra_serf__xml_push_state(parser, MERGEINFO_PATH); } else if (state == MERGEINFO_ITEM && strcmp(name.name, SVN_DAV__MERGEINFO_INFO) == 0) { svn_ra_serf__xml_push_state(parser, MERGEINFO_INFO); } return SVN_NO_ERROR; }
static svn_error_t * start_element(svn_ra_serf__xml_parser_t *parser, svn_ra_serf__dav_props_t name, const char **attrs, apr_pool_t *scratch_pool) { iprops_context_t *iprops_ctx = parser->user_data; iprops_state_e state; state = parser->state->current_state; if (state == NONE && strcmp(name.name, SVN_DAV__INHERITED_PROPS_REPORT) == 0) { svn_ra_serf__xml_push_state(parser, IPROPS_REPORT); } else if (state == IPROPS_REPORT && strcmp(name.name, SVN_DAV__IPROP_ITEM) == 0) { svn_stringbuf_setempty(iprops_ctx->curr_path); svn_stringbuf_setempty(iprops_ctx->curr_propname); svn_stringbuf_setempty(iprops_ctx->curr_propval); iprops_ctx->curr_prop_val_encoding = NULL; iprops_ctx->curr_iprop = NULL; svn_ra_serf__xml_push_state(parser, IPROPS_ITEM); } else if (state == IPROPS_ITEM && strcmp(name.name, SVN_DAV__IPROP_PROPVAL) == 0) { const char *prop_val_encoding = svn_xml_get_attr_value("encoding", attrs); iprops_ctx->curr_prop_val_encoding = apr_pstrdup(iprops_ctx->pool, prop_val_encoding); svn_ra_serf__xml_push_state(parser, IPROPS_PROPVAL); } else if (state == IPROPS_ITEM && strcmp(name.name, SVN_DAV__IPROP_PATH) == 0) { svn_ra_serf__xml_push_state(parser, IPROPS_PATH); } else if (state == IPROPS_ITEM && strcmp(name.name, SVN_DAV__IPROP_PROPNAME) == 0) { svn_ra_serf__xml_push_state(parser, IPROPS_PROPNAME); } else if (state == IPROPS_ITEM && strcmp(name.name, SVN_DAV__IPROP_PROPVAL) == 0) { svn_ra_serf__xml_push_state(parser, IPROPS_PROPVAL); } return SVN_NO_ERROR; }