Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/libsvn_ra_serf/property.c view on Meta::CPAN
if (strcmp(name, "repository-uuid") == 0)
return SVN_PROP_ENTRY_UUID;
if (strcmp(name, "lock-token") == 0)
return SVN_PROP_ENTRY_LOCK_TOKEN;
if (strcmp(name, "checked-in") == 0)
return SVN_RA_SERF__WC_CHECKED_IN_URL;
if (strcmp(ns, "DAV:") == 0 || strcmp(ns, SVN_DAV_PROP_NS_DAV) == 0)
{
/* Here DAV: properties not yet converted to svn: properties should be
ignored. */
return NULL;
}
/* An unknown namespace, must be a custom property. */
return apr_pstrcat(result_pool, ns, name, (char *)NULL);
}
/* Conforms to svn_ra_serf__walker_visitor_t */
static svn_error_t *
set_flat_props(void *baton,
const char *ns,
const char *name,
const svn_string_t *value,
apr_pool_t *pool)
{
apr_hash_t *props = baton;
apr_pool_t *result_pool = apr_hash_pool_get(props);
const char *prop_name;
/* ### is VAL in the proper pool? */
prop_name = svn_ra_serf__svnname_from_wirename(ns, name, result_pool);
if (prop_name != NULL)
svn_hash_sets(props, prop_name, value);
return SVN_NO_ERROR;
}
svn_error_t *
svn_ra_serf__flatten_props(apr_hash_t **flat_props,
apr_hash_t *props,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
*flat_props = apr_hash_make(result_pool);
return svn_error_trace(svn_ra_serf__walk_node_props(
props,
set_flat_props,
*flat_props /* baton */,
scratch_pool));
}
static svn_error_t *
select_revprops(void *baton,
const char *ns,
const char *name,
const svn_string_t *val,
apr_pool_t *scratch_pool)
{
apr_hash_t *revprops = baton;
apr_pool_t *result_pool = apr_hash_pool_get(revprops);
const char *prop_name;
/* ### copy NAME into the RESULT_POOL? */
/* ### copy VAL into the RESULT_POOL? */
if (strcmp(ns, SVN_DAV_PROP_NS_CUSTOM) == 0)
prop_name = name;
else if (strcmp(ns, SVN_DAV_PROP_NS_SVN) == 0)
prop_name = apr_pstrcat(result_pool, SVN_PROP_PREFIX, name, (char *)NULL);
else if (strcmp(ns, SVN_PROP_PREFIX) == 0)
prop_name = apr_pstrcat(result_pool, SVN_PROP_PREFIX, name, (char *)NULL);
else if (strcmp(ns, "") == 0)
prop_name = name;
else
{
/* do nothing for now? */
return SVN_NO_ERROR;
}
svn_hash_sets(revprops, prop_name, val);
return SVN_NO_ERROR;
}
svn_error_t *
svn_ra_serf__select_revprops(apr_hash_t **revprops,
const char *name,
svn_revnum_t rev,
apr_hash_t *all_revprops,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
*revprops = apr_hash_make(result_pool);
return svn_error_trace(svn_ra_serf__walk_all_props(
all_revprops, name, rev,
select_revprops, *revprops,
scratch_pool));
}
/*
* Contact the server (using CONN) to calculate baseline
* information for BASELINE_URL at REVISION (which may be
* SVN_INVALID_REVNUM to query the HEAD revision).
*
* If ACTUAL_REVISION is non-NULL, set *ACTUAL_REVISION to revision
* retrieved from the server as part of this process (which should
* match REVISION when REVISION is valid). Set *BASECOLL_URL_P to the
* baseline collection URL.
*/
static svn_error_t *
retrieve_baseline_info(svn_revnum_t *actual_revision,
const char **basecoll_url_p,
svn_ra_serf__connection_t *conn,
const char *baseline_url,
svn_revnum_t revision,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
apr_hash_t *props;
apr_hash_t *dav_props;
const char *basecoll_url;
SVN_ERR(svn_ra_serf__fetch_node_props(&props, conn,
baseline_url, revision,
baseline_props,
scratch_pool, scratch_pool));
dav_props = apr_hash_get(props, "DAV:", 4);
/* If DAV_PROPS is NULL, then svn_prop_get_value() will return NULL. */
basecoll_url = svn_prop_get_value(dav_props, "baseline-collection");
if (!basecoll_url)
{
return svn_error_create(SVN_ERR_RA_DAV_PROPS_NOT_FOUND, NULL,
_("The PROPFIND response did not include "
"the requested baseline-collection value"));
}
*basecoll_url_p = svn_urlpath__canonicalize(basecoll_url, result_pool);
if (actual_revision)
{
const char *version_name;
version_name = svn_prop_get_value(dav_props, SVN_DAV__VERSION_NAME);
if (!version_name)
return svn_error_create(SVN_ERR_RA_DAV_PROPS_NOT_FOUND, NULL,
_("The PROPFIND response did not include "
"the requested version-name value"));
*actual_revision = SVN_STR_TO_REV(version_name);
}
return SVN_NO_ERROR;
}
( run in 0.505 second using v1.01-cache-2.11-cpan-39bf76dae61 )