summaryrefslogtreecommitdiff
path: root/subversion/libsvn_ra/ra_loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/libsvn_ra/ra_loader.c')
-rw-r--r--subversion/libsvn_ra/ra_loader.c65
1 files changed, 52 insertions, 13 deletions
diff --git a/subversion/libsvn_ra/ra_loader.c b/subversion/libsvn_ra/ra_loader.c
index 3a782f239f9b0..ac07545e2ba03 100644
--- a/subversion/libsvn_ra/ra_loader.c
+++ b/subversion/libsvn_ra/ra_loader.c
@@ -80,7 +80,7 @@ static const struct ra_lib_defn {
{
"svn",
svn_schemes,
-#ifdef SVN_LIBSVN_CLIENT_LINKS_RA_SVN
+#ifdef SVN_LIBSVN_RA_LINKS_RA_SVN
svn_ra_svn__init,
svn_ra_svn__deprecated_init
#endif
@@ -89,7 +89,7 @@ static const struct ra_lib_defn {
{
"local",
local_schemes,
-#ifdef SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL
+#ifdef SVN_LIBSVN_RA_LINKS_RA_LOCAL
svn_ra_local__init,
svn_ra_local__deprecated_init
#endif
@@ -98,7 +98,7 @@ static const struct ra_lib_defn {
{
"serf",
dav_schemes,
-#ifdef SVN_LIBSVN_CLIENT_LINKS_RA_SERF
+#ifdef SVN_LIBSVN_RA_LINKS_RA_SERF
svn_ra_serf__init,
svn_ra_serf__deprecated_init
#endif
@@ -143,7 +143,7 @@ load_ra_module(svn_ra__init_func_t *func,
const char *compat_funcname;
apr_status_t status;
- libname = apr_psprintf(pool, "libsvn_ra_%s-%d.so.%d",
+ libname = apr_psprintf(pool, "libsvn_ra_%s-" SVN_DSO_SUFFIX_FMT,
ra_name, SVN_VER_MAJOR, SVN_SOVERSION);
funcname = apr_psprintf(pool, "svn_ra_%s__init", ra_name);
compat_funcname = apr_psprintf(pool, "svn_ra_%s_init", ra_name);
@@ -410,6 +410,9 @@ svn_error_t *svn_ra_open4(svn_ra_session_t **session_p,
return SVN_NO_ERROR;
}
+ if (vtable->set_svn_ra_open)
+ SVN_ERR(vtable->set_svn_ra_open(session, svn_ra_open4));
+
/* Check the UUID. */
if (uuid)
{
@@ -468,6 +471,9 @@ svn_ra__dup_session(svn_ra_session_t **new_session,
result_pool,
scratch_pool));
+ if (session->vtable->set_svn_ra_open)
+ SVN_ERR(session->vtable->set_svn_ra_open(session, svn_ra_open4));
+
*new_session = session;
return SVN_NO_ERROR;
}
@@ -639,6 +645,29 @@ svn_error_t *svn_ra_get_dir2(svn_ra_session_t *session,
path, revision, dirent_fields, pool);
}
+svn_error_t *
+svn_ra_list(svn_ra_session_t *session,
+ const char *path,
+ svn_revnum_t revision,
+ const apr_array_header_t *patterns,
+ svn_depth_t depth,
+ apr_uint32_t dirent_fields,
+ svn_ra_dirent_receiver_t receiver,
+ void *receiver_baton,
+ apr_pool_t *scratch_pool)
+{
+ SVN_ERR_ASSERT(svn_relpath_is_canonical(path));
+ if (!session->vtable->list)
+ return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL, NULL);
+
+ SVN_ERR(svn_ra__assert_capable_server(session, SVN_RA_CAPABILITY_LIST,
+ NULL, scratch_pool));
+
+ return session->vtable->list(session, path, revision, patterns, depth,
+ dirent_fields, receiver, receiver_baton,
+ scratch_pool);
+}
+
svn_error_t *svn_ra_get_mergeinfo(svn_ra_session_t *session,
svn_mergeinfo_catalog_t *catalog,
const apr_array_header_t *paths,
@@ -953,6 +982,7 @@ svn_error_t *svn_ra_get_locations(svn_ra_session_t *session,
{
svn_error_t *err;
+ SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(peg_revision));
SVN_ERR_ASSERT(svn_relpath_is_canonical(path));
err = session->vtable->get_locations(session, locations, path,
peg_revision, location_revisions, pool);
@@ -1120,6 +1150,8 @@ svn_error_t *svn_ra_replay(svn_ra_session_t *session,
void *edit_baton,
apr_pool_t *pool)
{
+ SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(revision)
+ && SVN_IS_VALID_REVNUM(low_water_mark));
return session->vtable->replay(session, revision, low_water_mark,
text_deltas, editor, edit_baton, pool);
}
@@ -1187,7 +1219,14 @@ svn_ra_replay_range(svn_ra_session_t *session,
void *replay_baton,
apr_pool_t *pool)
{
- svn_error_t *err =
+ svn_error_t *err;
+
+ SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(start_revision)
+ && SVN_IS_VALID_REVNUM(end_revision)
+ && start_revision <= end_revision
+ && SVN_IS_VALID_REVNUM(low_water_mark));
+
+ err =
session->vtable->replay_range(session, start_revision, end_revision,
low_water_mark, text_deltas,
revstart_func, revfinish_func,
@@ -1518,7 +1557,7 @@ svn_ra_get_ra_library(svn_ra_plugin_t **library,
implementation for svn_ra_foo_init which returns a "not implemented"
error. */
-#ifndef SVN_LIBSVN_CLIENT_LINKS_RA_NEON
+#ifndef SVN_LIBSVN_RA_LINKS_RA_NEON
svn_error_t *
svn_ra_dav_init(int abi_version,
apr_pool_t *pool,
@@ -1526,9 +1565,9 @@ svn_ra_dav_init(int abi_version,
{
return svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, NULL, NULL);
}
-#endif /* ! SVN_LIBSVN_CLIENT_LINKS_RA_NEON */
+#endif /* ! SVN_LIBSVN_RA_LINKS_RA_NEON */
-#ifndef SVN_LIBSVN_CLIENT_LINKS_RA_SVN
+#ifndef SVN_LIBSVN_RA_LINKS_RA_SVN
svn_error_t *
svn_ra_svn_init(int abi_version,
apr_pool_t *pool,
@@ -1536,9 +1575,9 @@ svn_ra_svn_init(int abi_version,
{
return svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, NULL, NULL);
}
-#endif /* ! SVN_LIBSVN_CLIENT_LINKS_RA_SVN */
+#endif /* ! SVN_LIBSVN_RA_LINKS_RA_SVN */
-#ifndef SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL
+#ifndef SVN_LIBSVN_RA_LINKS_RA_LOCAL
svn_error_t *
svn_ra_local_init(int abi_version,
apr_pool_t *pool,
@@ -1546,9 +1585,9 @@ svn_ra_local_init(int abi_version,
{
return svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, NULL, NULL);
}
-#endif /* ! SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL */
+#endif /* ! SVN_LIBSVN_RA_LINKS_RA_LOCAL */
-#ifndef SVN_LIBSVN_CLIENT_LINKS_RA_SERF
+#ifndef SVN_LIBSVN_RA_LINKS_RA_SERF
svn_error_t *
svn_ra_serf_init(int abi_version,
apr_pool_t *pool,
@@ -1556,4 +1595,4 @@ svn_ra_serf_init(int abi_version,
{
return svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, NULL, NULL);
}
-#endif /* ! SVN_LIBSVN_CLIENT_LINKS_RA_SERF */
+#endif /* ! SVN_LIBSVN_RA_LINKS_RA_SERF */