diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-05-31 20:58:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-05-31 20:58:28 +0000 |
commit | bbee6e0814d5875b85b81f26fd4ca7a28b6f9570 (patch) | |
tree | 726fcf32b39ca8976d7aa51b67c7236509f1bde4 /subversion/libsvn_fs | |
parent | 38cef28c88864beaadac7a7cffdec6da952c3eb2 (diff) |
Notes
Diffstat (limited to 'subversion/libsvn_fs')
-rw-r--r-- | subversion/libsvn_fs/fs-loader.c | 39 | ||||
-rw-r--r-- | subversion/libsvn_fs/fs-loader.h | 17 | ||||
-rw-r--r-- | subversion/libsvn_fs/libsvn_fs.pc.in | 8 |
3 files changed, 58 insertions, 6 deletions
diff --git a/subversion/libsvn_fs/fs-loader.c b/subversion/libsvn_fs/fs-loader.c index f898d8a56a6a..3840f225419c 100644 --- a/subversion/libsvn_fs/fs-loader.c +++ b/subversion/libsvn_fs/fs-loader.c @@ -2221,3 +2221,42 @@ svn_fs_info_dup(const void *info_void, return apr_pmemdup(result_pool, info, sizeof(*info)); } +svn_error_t * +svn_fs_ioctl(svn_fs_t *fs, + svn_fs_ioctl_code_t ctlcode, + void *input, + void **output_p, + svn_cancel_func_t cancel_func, + void *cancel_baton, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool) +{ + void *output; + + if (fs) + { + if (!fs->vtable->ioctl) + return svn_error_create(SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE, NULL, NULL); + + SVN_ERR(fs->vtable->ioctl(fs, ctlcode, input, &output, + cancel_func, cancel_baton, + result_pool, scratch_pool)); + } + else + { + fs_library_vtable_t *vtable; + + SVN_ERR(get_library_vtable(&vtable, ctlcode.fs_type, scratch_pool)); + + if (!vtable->ioctl) + return svn_error_create(SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE, NULL, NULL); + + SVN_ERR(vtable->ioctl(ctlcode, input, &output, + cancel_func, cancel_baton, + result_pool, scratch_pool)); + } + + if (output_p) + *output_p = output; + return SVN_NO_ERROR; +} diff --git a/subversion/libsvn_fs/fs-loader.h b/subversion/libsvn_fs/fs-loader.h index 0712c23307d9..35b55d644e2b 100644 --- a/subversion/libsvn_fs/fs-loader.h +++ b/subversion/libsvn_fs/fs-loader.h @@ -159,6 +159,13 @@ typedef struct fs_library_vtable_t /* For svn_fs_info_fsfs_dup(). */ void *(*info_fsap_dup)(const void *fsap_info, apr_pool_t *result_pool); + + svn_error_t *(*ioctl)(svn_fs_ioctl_code_t ctlcode, + void *input, void **output_p, + svn_cancel_func_t cancel_func, + void *cancel_baton, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool); } fs_library_vtable_t; /* This is the type of symbol an FS module defines to fetch the @@ -200,12 +207,12 @@ typedef struct fs_vtable_t svn_error_t *(*revision_prop)(svn_string_t **value_p, svn_fs_t *fs, svn_revnum_t rev, const char *propname, svn_boolean_t refresh, - apr_pool_t *result_pool, + apr_pool_t *result_pool, apr_pool_t *scratch_pool); svn_error_t *(*revision_proplist)(apr_hash_t **table_p, svn_fs_t *fs, svn_revnum_t rev, svn_boolean_t refresh, - apr_pool_t *result_pool, + apr_pool_t *result_pool, apr_pool_t *scratch_pool); svn_error_t *(*change_rev_prop)(svn_fs_t *fs, svn_revnum_t rev, const char *name, @@ -266,6 +273,12 @@ typedef struct fs_vtable_t svn_error_t *(*bdb_set_errcall)(svn_fs_t *fs, void (*handler)(const char *errpfx, char *msg)); + svn_error_t *(*ioctl)(svn_fs_t *fs, svn_fs_ioctl_code_t ctlcode, + void *input, void **output_p, + svn_cancel_func_t cancel_func, + void *cancel_baton, + apr_pool_t *result_pool, + apr_pool_t *scratch_pool); } fs_vtable_t; diff --git a/subversion/libsvn_fs/libsvn_fs.pc.in b/subversion/libsvn_fs/libsvn_fs.pc.in index 67154f01d7dc..d9a8b0b7a0b0 100644 --- a/subversion/libsvn_fs/libsvn_fs.pc.in +++ b/subversion/libsvn_fs/libsvn_fs.pc.in @@ -6,7 +6,7 @@ includedir=@includedir@ Name: libsvn_fs Description: Subversion Repository Filesystem Library Version: @PACKAGE_VERSION@ -Requires: apr-util-@SVN_APR_MAJOR_VERSION@ apr-@SVN_APR_MAJOR_VERSION@ -Requires.private: libsvn_fs_util libsvn_delta libsvn_subr -Libs: -L${libdir} -lsvn_fs -Cflags: -I${includedir} +Requires: apr-util-@SVN_APR_MAJOR_VERSION@, apr-@SVN_APR_MAJOR_VERSION@ +Requires.private: libsvn_fs_util, libsvn_delta, libsvn_subr +Libs: -L${libdir} -lsvn_fs-1 +Cflags: -I${includedir}/subversion-1 |