svn_error_t * svn_fs_bdb__read_rep(representation_t **rep_p, svn_fs_t *fs, const char *key, trail_t *trail, apr_pool_t *pool) { base_fs_data_t *bfd = fs->fsap_data; svn_skel_t *skel; int db_err; DBT query, result; svn_fs_base__trail_debug(trail, "representations", "get"); db_err = bfd->representations->get(bfd->representations, trail->db_txn, svn_fs_base__str_to_dbt(&query, key), svn_fs_base__result_dbt(&result), 0); svn_fs_base__track_dbt(&result, pool); /* If there's no such node, return an appropriately specific error. */ if (db_err == DB_NOTFOUND) return svn_error_createf (SVN_ERR_FS_NO_SUCH_REPRESENTATION, 0, _("No such representation '%s'"), key); /* Handle any other error conditions. */ SVN_ERR(BDB_WRAP(fs, _("reading representation"), db_err)); /* Parse the REPRESENTATION skel. */ skel = svn_skel__parse(result.data, result.size, pool); /* Convert to a native type. */ return svn_fs_base__parse_representation_skel(rep_p, skel, pool); }
static svn_error_t * txn_body_write_rep(void *baton, trail_t *trail) { struct rep_args *b = (struct rep_args *) baton; representation_t *rep; SVN_ERR(svn_fs_base__parse_representation_skel(&rep, b->skel, trail->pool)); return svn_fs_bdb__write_rep(b->fs, b->key, rep, trail, trail->pool); }