Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}