svn_error_t * svn_fs_x__init(const svn_version_t *loader_version, fs_library_vtable_t **vtable, apr_pool_t* common_pool) { static const svn_version_checklist_t checklist[] = { { "svn_subr", svn_subr_version }, { "svn_delta", svn_delta_version }, { "svn_fs_util", svn_fs_util__version }, { NULL, NULL } }; /* Simplified version check to make sure we can safely use the VTABLE parameter. The FS loader does a more exhaustive check. */ if (loader_version->major != SVN_VER_MAJOR) return svn_error_createf(SVN_ERR_VERSION_MISMATCH, NULL, _("Unsupported FS loader version (%d) for fsx"), loader_version->major); SVN_ERR(svn_ver_check_list2(x_version(), checklist, svn_ver_equal)); SVN_ERR(svn_fs_x__batch_fsync_init(common_pool)); *vtable = &library_vtable; return SVN_NO_ERROR; }
/* Version compatibility check */ static svn_error_t * check_lib_versions(void) { static const svn_version_checklist_t checklist[] = { { "svn_subr", svn_subr_version }, { "svn_wc", svn_wc_version }, { NULL, NULL } }; SVN_VERSION_DEFINE(my_version); return svn_ver_check_list2(&my_version, checklist, svn_ver_equal); }
svn_error_t * svn_ra_serf__init(const svn_version_t *loader_version, const svn_ra__vtable_t **vtable, apr_pool_t *pool) { static const svn_version_checklist_t checklist[] = { { "svn_subr", svn_subr_version }, { "svn_delta", svn_delta_version }, { NULL, NULL } }; int serf_major; int serf_minor; int serf_patch; SVN_ERR(svn_ver_check_list2(ra_serf_version(), checklist, svn_ver_equal)); /* Simplified version check to make sure we can safely use the VTABLE parameter. The RA loader does a more exhaustive check. */ if (loader_version->major != SVN_VER_MAJOR) { return svn_error_createf( SVN_ERR_VERSION_MISMATCH, NULL, _("Unsupported RA loader version (%d) for ra_serf"), loader_version->major); } /* Make sure that we have loaded a compatible library: the MAJOR must match, and the minor must be at *least* what we compiled against. The patch level is simply ignored. */ serf_lib_version(&serf_major, &serf_minor, &serf_patch); if (serf_major != SERF_MAJOR_VERSION || serf_minor < SERF_MINOR_VERSION) { return svn_error_createf( /* ### should return a unique error */ SVN_ERR_VERSION_MISMATCH, NULL, _("ra_serf was compiled for serf %d.%d.%d but loaded " "an incompatible %d.%d.%d library"), SERF_MAJOR_VERSION, SERF_MINOR_VERSION, SERF_PATCH_VERSION, serf_major, serf_minor, serf_patch); } *vtable = &serf_vtable; return SVN_NO_ERROR; }