Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/libsvn_wc/wc_db.c view on Meta::CPAN
child_abspath = svn_dirent_join(wcroot->abspath,
child_relpath, iterpool);
err = receiver_func(receiver_baton, child_abspath, props, iterpool);
}
err = svn_error_compose_create(err, svn_sqlite__step(&have_row, stmt));
}
err = svn_error_compose_create(err, svn_sqlite__reset(stmt));
svn_pool_destroy(iterpool);
SVN_ERR(svn_error_compose_create(
err,
svn_sqlite__exec_statements(wcroot->sdb,
STMT_DROP_TARGET_PROP_CACHE)));
return SVN_NO_ERROR;
}
/* Helper for svn_wc__db_read_props().
*/
static svn_error_t *
db_read_props(apr_hash_t **props,
svn_wc__db_wcroot_t *wcroot,
const char *local_relpath,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
svn_sqlite__stmt_t *stmt;
svn_boolean_t have_row;
svn_error_t *err = NULL;
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
STMT_SELECT_ACTUAL_PROPS));
SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
if (have_row && !svn_sqlite__column_is_null(stmt, 0))
{
err = svn_sqlite__column_properties(props, stmt, 0,
result_pool, scratch_pool);
}
else
have_row = FALSE;
SVN_ERR(svn_error_compose_create(err, svn_sqlite__reset(stmt)));
if (have_row)
return SVN_NO_ERROR;
/* No local changes. Return the pristine props for this node. */
SVN_ERR(db_read_pristine_props(props, wcroot, local_relpath, FALSE,
result_pool, scratch_pool));
if (*props == NULL)
{
/* Pristine properties are not defined for this node.
### we need to determine whether this node is in a state that
### allows for ACTUAL properties (ie. not deleted). for now,
### just say all nodes, no matter the state, have at least an
### empty set of props. */
*props = apr_hash_make(result_pool);
}
return SVN_NO_ERROR;
}
svn_error_t *
svn_wc__db_read_props(apr_hash_t **props,
svn_wc__db_t *db,
const char *local_abspath,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
svn_wc__db_wcroot_t *wcroot;
const char *local_relpath;
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&wcroot, &local_relpath, db,
local_abspath, scratch_pool, scratch_pool));
VERIFY_USABLE_WCROOT(wcroot);
SVN_WC__DB_WITH_TXN(db_read_props(props, wcroot, local_relpath,
result_pool, scratch_pool),
wcroot);
return SVN_NO_ERROR;
}
static svn_error_t *
db_read_pristine_props(apr_hash_t **props,
svn_wc__db_wcroot_t *wcroot,
const char *local_relpath,
svn_boolean_t deleted_ok,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
svn_sqlite__stmt_t *stmt;
svn_boolean_t have_row;
svn_wc__db_status_t presence;
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, STMT_SELECT_NODE_PROPS));
SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
if (!have_row)
{
return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND,
svn_sqlite__reset(stmt),
_("The node '%s' was not found."),
path_for_error_message(wcroot,
local_relpath,
scratch_pool));
}
( run in 0.564 second using v1.01-cache-2.11-cpan-483215c6ad5 )