static svn_error_t * dir_close(void *dir_baton, apr_pool_t *scratch_pool) { struct dir_baton_t *db = dir_baton; /*struct edit_baton_t *eb = db->eb;*/ SVN_ERR(ensure_added(db, scratch_pool)); SVN_ERR(maybe_done(db)); return SVN_NO_ERROR; }
static svn_error_t * file_close(void *file_baton, const char *text_checksum, apr_pool_t *scratch_pool) { struct file_baton_t *fb = file_baton; struct edit_baton_t *eb = fb->eb; struct dir_baton_t *pb = fb->pb; SVN_ERR(ensure_added(pb, fb->pool)); if (text_checksum) { svn_checksum_t *expected_checksum; svn_checksum_t *actual_checksum; SVN_ERR(svn_checksum_parse_hex(&expected_checksum, svn_checksum_md5, text_checksum, fb->pool)); actual_checksum = svn_checksum__from_digest_md5(fb->digest, fb->pool); if (! svn_checksum_match(expected_checksum, actual_checksum)) return svn_error_trace( svn_checksum_mismatch_err(expected_checksum, actual_checksum, fb->pool, _("Checksum mismatch for '%s'"), svn_dirent_local_style( fb->local_abspath, fb->pool))); } SVN_ERR(svn_wc_add_from_disk3(eb->wc_ctx, fb->local_abspath, fb->properties, TRUE /* skip checks */, eb->notify_func, eb->notify_baton, fb->pool)); svn_pool_destroy(fb->pool); SVN_ERR(maybe_done(pb)); return SVN_NO_ERROR; }
static svn_error_t * ensure_added_file(struct file_baton_t *fb, apr_pool_t *scratch_pool) { struct edit_baton_t *eb = fb->eb; if (fb->created) return SVN_NO_ERROR; if (fb->pb) SVN_ERR(ensure_added(fb->pb, scratch_pool)); fb->created = TRUE; /* Add the file with all the already collected properties */ SVN_ERR(svn_wc_add_from_disk3(eb->wc_ctx, fb->local_abspath, fb->properties, TRUE /* skip checks */, eb->notify_func, eb->notify_baton, fb->pool)); return SVN_NO_ERROR; }
static svn_error_t * ensure_added(struct dir_baton_t *db, apr_pool_t *scratch_pool) { if (db->created) return SVN_NO_ERROR; if (db->pb) SVN_ERR(ensure_added(db->pb, scratch_pool)); db->created = TRUE; /* Add the directory with all the already collected properties */ SVN_ERR(svn_wc_add_from_disk3(db->eb->wc_ctx, db->local_abspath, db->properties, TRUE /* skip checks */, db->eb->notify_func, db->eb->notify_baton, scratch_pool)); return SVN_NO_ERROR; }