Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/libsvn_fs/fs-loader.c view on Meta::CPAN
return svn_error_createf(SVN_ERR_FS_PATH_SYNTAX, NULL,
_("Path '%s' is not in UTF-8"), path);
}
/* No "." or ".." elements. */
if (svn_path_is_backpath_present(path)
|| svn_path_is_dotpath_present(path))
{
return svn_error_createf(SVN_ERR_FS_PATH_SYNTAX, NULL,
_("Path '%s' contains '.' or '..' element"),
path);
}
/* That's good enough. */
return SVN_NO_ERROR;
}
/* Allocate svn_fs_t structure. */
static svn_fs_t *
fs_new(apr_hash_t *fs_config, apr_pool_t *pool)
{
svn_fs_t *fs = apr_palloc(pool, sizeof(*fs));
fs->pool = pool;
fs->path = NULL;
fs->warning = default_warning_func;
fs->warning_baton = NULL;
fs->config = fs_config;
fs->access_ctx = NULL;
fs->vtable = NULL;
fs->fsap_data = NULL;
fs->uuid = NULL;
return fs;
}
svn_fs_t *
svn_fs_new(apr_hash_t *fs_config, apr_pool_t *pool)
{
return fs_new(fs_config, pool);
}
void
svn_fs_set_warning_func(svn_fs_t *fs, svn_fs_warning_callback_t warning,
void *warning_baton)
{
fs->warning = warning;
fs->warning_baton = warning_baton;
}
svn_error_t *
svn_fs_create(svn_fs_t **fs_p, const char *path, apr_hash_t *fs_config,
apr_pool_t *pool)
{
fs_library_vtable_t *vtable;
const char *fs_type = svn_hash__get_cstring(fs_config,
SVN_FS_CONFIG_FS_TYPE,
DEFAULT_FS_TYPE);
SVN_ERR(get_library_vtable(&vtable, fs_type, pool));
/* Create the FS directory and write out the fsap-name file. */
SVN_ERR(svn_io_dir_make_sgid(path, APR_OS_DEFAULT, pool));
SVN_ERR(write_fs_type(path, fs_type, pool));
/* Perform the actual creation. */
*fs_p = fs_new(fs_config, pool);
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->create(*fs_p, path, pool, common_pool));
SVN_ERR(vtable->set_svn_fs_open(*fs_p, svn_fs_open));
return SVN_NO_ERROR;
}
svn_error_t *
svn_fs_open(svn_fs_t **fs_p, const char *path, apr_hash_t *fs_config,
apr_pool_t *pool)
{
fs_library_vtable_t *vtable;
SVN_ERR(fs_library_vtable(&vtable, path, pool));
*fs_p = fs_new(fs_config, pool);
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->open_fs(*fs_p, path, pool, common_pool));
SVN_ERR(vtable->set_svn_fs_open(*fs_p, svn_fs_open));
return SVN_NO_ERROR;
}
svn_error_t *
svn_fs_upgrade(const char *path, apr_pool_t *pool)
{
fs_library_vtable_t *vtable;
svn_fs_t *fs;
SVN_ERR(fs_library_vtable(&vtable, path, pool));
fs = fs_new(NULL, pool);
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->upgrade_fs(fs, path, pool, common_pool));
return SVN_NO_ERROR;
}
svn_error_t *
svn_fs_verify(const char *path,
apr_hash_t *fs_config,
svn_revnum_t start,
svn_revnum_t end,
svn_fs_progress_notify_func_t notify_func,
void *notify_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *pool)
{
fs_library_vtable_t *vtable;
svn_fs_t *fs;
SVN_ERR(fs_library_vtable(&vtable, path, pool));
fs = fs_new(fs_config, pool);
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->verify_fs(fs, path, start, end,
src/subversion/subversion/libsvn_fs/fs-loader.c view on Meta::CPAN
SVN_ERR(fs_library_vtable(&vtable, path, pool));
fs = fs_new(NULL, pool);
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->pack_fs(fs, path, notify_func, notify_baton,
cancel_func, cancel_baton, pool,
common_pool));
return SVN_NO_ERROR;
}
svn_error_t *
svn_fs_recover(const char *path,
svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool)
{
fs_library_vtable_t *vtable;
svn_fs_t *fs;
SVN_ERR(fs_library_vtable(&vtable, path, pool));
fs = fs_new(NULL, pool);
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->open_fs_for_recovery(fs, path, pool,
common_pool));
return svn_error_trace(vtable->recover(fs, cancel_func, cancel_baton,
pool));
}
svn_error_t *
svn_fs_verify_root(svn_fs_root_t *root,
apr_pool_t *scratch_pool)
{
svn_fs_t *fs = root->fs;
SVN_ERR(fs->vtable->verify_root(root, scratch_pool));
return SVN_NO_ERROR;
}
svn_error_t *
svn_fs_freeze(svn_fs_t *fs,
svn_fs_freeze_func_t freeze_func,
void *freeze_baton,
apr_pool_t *pool)
{
SVN_ERR(fs->vtable->freeze(fs, freeze_func, freeze_baton, pool));
return SVN_NO_ERROR;
}
/* --- Berkeley-specific functions --- */
svn_error_t *
svn_fs_create_berkeley(svn_fs_t *fs, const char *path)
{
fs_library_vtable_t *vtable;
SVN_ERR(get_library_vtable(&vtable, SVN_FS_TYPE_BDB, fs->pool));
/* Create the FS directory and write out the fsap-name file. */
SVN_ERR(svn_io_dir_make_sgid(path, APR_OS_DEFAULT, fs->pool));
SVN_ERR(write_fs_type(path, SVN_FS_TYPE_BDB, fs->pool));
/* Perform the actual creation. */
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->create(fs, path, fs->pool, common_pool));
SVN_ERR(vtable->set_svn_fs_open(fs, svn_fs_open));
return SVN_NO_ERROR;
}
svn_error_t *
svn_fs_open_berkeley(svn_fs_t *fs, const char *path)
{
fs_library_vtable_t *vtable;
SVN_ERR(fs_library_vtable(&vtable, path, fs->pool));
SVN_MUTEX__WITH_LOCK(common_pool_lock,
vtable->open_fs(fs, path, fs->pool, common_pool));
SVN_ERR(vtable->set_svn_fs_open(fs, svn_fs_open));
return SVN_NO_ERROR;
}
const char *
svn_fs_berkeley_path(svn_fs_t *fs, apr_pool_t *pool)
{
return svn_fs_path(fs, pool);
}
svn_error_t *
svn_fs_delete_berkeley(const char *path, apr_pool_t *pool)
{
return svn_error_trace(svn_fs_delete_fs(path, pool));
}
svn_error_t *
svn_fs_hotcopy_berkeley(const char *src_path, const char *dest_path,
svn_boolean_t clean_logs, apr_pool_t *pool)
{
return svn_error_trace(svn_fs_hotcopy2(src_path, dest_path, clean_logs,
FALSE, NULL, NULL, pool));
}
svn_error_t *
svn_fs_berkeley_recover(const char *path, apr_pool_t *pool)
{
return svn_error_trace(svn_fs_recover(path, NULL, NULL, pool));
}
svn_error_t *
svn_fs_set_berkeley_errcall(svn_fs_t *fs,
void (*handler)(const char *errpfx, char *msg))
{
return svn_error_trace(fs->vtable->bdb_set_errcall(fs, handler));
}
svn_error_t *
svn_fs_berkeley_logfiles(apr_array_header_t **logfiles,
const char *path,
svn_boolean_t only_unused,
( run in 0.604 second using v1.01-cache-2.11-cpan-71847e10f99 )