/* Opens a file to be used for random-accesible storage */ mukv_t *mukv_open(const char *path, apr_pool_t *pool) { mukv_t *kv = apr_palloc(pool, sizeof(mukv_t)); kv->index = rhash_make(pool); kv->path = apr_pstrdup(pool, path); if ((kv->file = fopen(path, "w+")) == NULL) { return NULL; } return kv; }
/* Sets up a delta editor for dumping a revision */ void delta_setup_editor(session_t *session, dump_options_t *options, list_t *logs, log_revision_t *log_revision, svn_revnum_t local_revnum, svn_delta_editor_t **editor, void **editor_baton, apr_pool_t *pool) { de_baton_t *baton; *editor = svn_delta_default_editor(pool); (*editor)->set_target_revision = de_set_target_revision; (*editor)->open_root = de_open_root; (*editor)->delete_entry = de_delete_entry; (*editor)->add_directory = de_add_directory; (*editor)->open_directory = de_open_directory; (*editor)->add_file = de_add_file; (*editor)->open_file = de_open_file; (*editor)->apply_textdelta = de_apply_textdelta; (*editor)->close_file = de_close_file; (*editor)->close_directory = de_close_directory; (*editor)->change_file_prop = de_change_file_prop; (*editor)->change_dir_prop = de_change_dir_prop; (*editor)->close_edit = de_close_edit; (*editor)->absent_directory = de_absent_directory; (*editor)->absent_file = de_absent_file; (*editor)->abort_edit = de_abort_edit; baton = apr_palloc(pool, sizeof(de_baton_t)); baton->session = session; baton->opts = options; baton->logs = logs; baton->log_revision = log_revision; baton->local_revnum = local_revnum; baton->revision_pool = svn_pool_create(pool); baton->dumped_entries = apr_hash_make(baton->revision_pool); *editor_baton = baton; /* Create global hashes if needed */ if (!hashes_created) { apr_pool_t *hash_pool = svn_pool_create(session->pool); md5_hash = rhash_make(hash_pool); delta_hash = rhash_make(hash_pool); prop_hash = rhash_make(hash_pool); hashes_created = 1; } }