static svn_error_t * delete_node_property(void *baton, const char *name) { struct node_baton *nb = baton; struct revision_baton *rb = nb->rb; /* If we're skipping this revision, we're done here. */ if (rb->skipped) return SVN_NO_ERROR; return change_node_prop(rb->txn_root, nb->path, name, NULL, rb->pb->validate_props, nb->pool); }
static svn_error_t * set_node_property(void *baton, const char *name, const svn_string_t *value) { struct node_baton *nb = baton; struct revision_baton *rb = nb->rb; struct parse_baton *pb = rb->pb; /* If we're skipping this revision, we're done here. */ if (rb->skipped) return SVN_NO_ERROR; /* Adjust mergeinfo. If this fails, presumably because the mergeinfo property has an ill-formed value, then we must not fail to load the repository (at least if it's a simple load with no revision offset adjustments, path changes, etc.) so just warn and leave it as it is. */ if (strcmp(name, SVN_PROP_MERGEINFO) == 0) { svn_string_t *new_value; svn_error_t *err; err = svn_repos__adjust_mergeinfo_property(&new_value, value, pb->parent_dir, pb->rev_map, pb->oldest_dumpstream_rev, rb->rev_offset, pb->notify_func, pb->notify_baton, nb->pool, pb->notify_pool); svn_pool_clear(pb->notify_pool); if (err) { if (pb->validate_props) { return svn_error_quick_wrap( err, _("Invalid svn:mergeinfo value")); } if (pb->notify_func) { svn_repos_notify_t *notify = svn_repos_notify_create(svn_repos_notify_warning, pb->notify_pool); notify->warning = svn_repos_notify_warning_invalid_mergeinfo; notify->warning_str = _("Invalid svn:mergeinfo value; " "leaving unchanged"); pb->notify_func(pb->notify_baton, notify, pb->notify_pool); svn_pool_clear(pb->notify_pool); } svn_error_clear(err); } else { value = new_value; } } return change_node_prop(rb->txn_root, nb->path, name, value, pb->validate_props, nb->pool); }