Author: rinrab
Date: Sun Oct 20 19:02:59 2024
New Revision: 1921446
URL: http://svn.apache.org/viewvc?rev=1921446&view=rev
Log:
Move the reverse diff tree processor implementation from diff_tree.c into
a new file, diff_tree_reverse.c.
[in subversion/libsvn_diff]
* diff_tree.c
(svn_diff__tree_processor_reverse_create,
static helpers for the implementation):
Removed with the functions, since they were moved to a new file.
* diff_tree_reverse.c: Copied from diff_tree.c, keeping only the functions,
which should be moved here.
Added:
subversion/trunk/subversion/libsvn_diff/diff_tree_reverse.c
- copied, changed from r1921444,
subversion/trunk/subversion/libsvn_diff/diff_tree.c
Modified:
subversion/trunk/subversion/libsvn_diff/diff_tree.c
Modified: subversion/trunk/subversion/libsvn_diff/diff_tree.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/diff_tree.c?rev=1921446&r1=1921445&r2=1921446&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/diff_tree.c (original)
+++ subversion/trunk/subversion/libsvn_diff/diff_tree.c Sun Oct 20 19:02:59 2024
@@ -228,310 +228,6 @@ svn_diff__tree_processor_create(void *ba
return tp;
}
-struct reverse_tree_baton_t
-{
- const svn_diff_tree_processor_t *processor;
-};
-
-static svn_error_t *
-reverse_dir_opened(void **new_dir_baton,
- svn_boolean_t *skip,
- svn_boolean_t *skip_children,
- const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const svn_diff_source_t *copyfrom_source,
- void *parent_dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->dir_opened(new_dir_baton, skip, skip_children,
- relpath,
- right_source, left_source,
- NULL /* copyfrom */,
- parent_dir_baton,
- rb->processor,
- result_pool, scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_dir_added(const char *relpath,
- const svn_diff_source_t *copyfrom_source,
- const svn_diff_source_t *right_source,
- /*const*/ apr_hash_t *copyfrom_props,
- /*const*/ apr_hash_t *right_props,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->dir_deleted(relpath,
- right_source,
- right_props,
- dir_baton,
- rb->processor,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_dir_deleted(const char *relpath,
- const svn_diff_source_t *left_source,
- /*const*/ apr_hash_t *left_props,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->dir_added(relpath,
- NULL,
- left_source,
- NULL,
- left_props,
- dir_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_dir_changed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- /*const*/ apr_hash_t *left_props,
- /*const*/ apr_hash_t *right_props,
- const apr_array_header_t *prop_changes,
- void *dir_baton,
- const struct svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
- apr_array_header_t *reversed_prop_changes = NULL;
-
- if (prop_changes)
- {
- SVN_ERR_ASSERT(left_props != NULL && right_props != NULL);
- SVN_ERR(svn_prop_diffs(&reversed_prop_changes, left_props, right_props,
- scratch_pool));
- }
-
- SVN_ERR(rb->processor->dir_changed(relpath,
- right_source,
- left_source,
- right_props,
- left_props,
- reversed_prop_changes,
- dir_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_dir_closed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->dir_closed(relpath,
- right_source,
- left_source,
- dir_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_file_opened(void **new_file_baton,
- svn_boolean_t *skip,
- const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const svn_diff_source_t *copyfrom_source,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->file_opened(new_file_baton,
- skip,
- relpath,
- right_source,
- left_source,
- NULL /* copy_from */,
- dir_baton,
- rb->processor,
- result_pool,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_file_added(const char *relpath,
- const svn_diff_source_t *copyfrom_source,
- const svn_diff_source_t *right_source,
- const char *copyfrom_file,
- const char *right_file,
- /*const*/ apr_hash_t *copyfrom_props,
- /*const*/ apr_hash_t *right_props,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->file_deleted(relpath,
- right_source,
- right_file,
- right_props,
- file_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_file_deleted(const char *relpath,
- const svn_diff_source_t *left_source,
- const char *left_file,
- /*const*/ apr_hash_t *left_props,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->file_added(relpath,
- NULL /* copyfrom src */,
- left_source,
- NULL /* copyfrom file */,
- left_file,
- NULL /* copyfrom props */,
- left_props,
- file_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_file_changed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const char *left_file,
- const char *right_file,
- /*const*/ apr_hash_t *left_props,
- /*const*/ apr_hash_t *right_props,
- svn_boolean_t file_modified,
- const apr_array_header_t *prop_changes,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
- apr_array_header_t *reversed_prop_changes = NULL;
-
- if (prop_changes)
- {
- SVN_ERR_ASSERT(left_props != NULL && right_props != NULL);
- SVN_ERR(svn_prop_diffs(&reversed_prop_changes, left_props, right_props,
- scratch_pool));
- }
-
- SVN_ERR(rb->processor->file_changed(relpath,
- right_source,
- left_source,
- right_file,
- left_file,
- right_props,
- left_props,
- file_modified,
- reversed_prop_changes,
- file_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_file_closed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->file_closed(relpath,
- right_source,
- left_source,
- file_baton,
- rb->processor,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-reverse_node_absent(const char *relpath,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct reverse_tree_baton_t *rb = processor->baton;
-
- SVN_ERR(rb->processor->node_absent(relpath,
- dir_baton,
- rb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-
-const svn_diff_tree_processor_t *
-svn_diff__tree_processor_reverse_create(const svn_diff_tree_processor_t *
processor,
- apr_pool_t *result_pool)
-{
- struct reverse_tree_baton_t *rb;
- svn_diff_tree_processor_t *reverse;
-
- rb = apr_pcalloc(result_pool, sizeof(*rb));
- rb->processor = processor;
-
- reverse = svn_diff__tree_processor_create(rb, result_pool);
-
- reverse->dir_opened = reverse_dir_opened;
- reverse->dir_added = reverse_dir_added;
- reverse->dir_deleted = reverse_dir_deleted;
- reverse->dir_changed = reverse_dir_changed;
- reverse->dir_closed = reverse_dir_closed;
-
- reverse->file_opened = reverse_file_opened;
- reverse->file_added = reverse_file_added;
- reverse->file_deleted = reverse_file_deleted;
- reverse->file_changed = reverse_file_changed;
- reverse->file_closed = reverse_file_closed;
-
- reverse->node_absent = reverse_node_absent;
-
- return reverse;
-}
-
struct copy_as_changed_baton_t
{
const svn_diff_tree_processor_t *processor;
Copied: subversion/trunk/subversion/libsvn_diff/diff_tree_reverse.c (from
r1921444, subversion/trunk/subversion/libsvn_diff/diff_tree.c)
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/diff_tree_reverse.c?p2=subversion/trunk/subversion/libsvn_diff/diff_tree_reverse.c&p1=subversion/trunk/subversion/libsvn_diff/diff_tree.c&r1=1921444&r2=1921446&rev=1921446&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/diff_tree.c (original)
+++ subversion/trunk/subversion/libsvn_diff/diff_tree_reverse.c Sun Oct 20
19:02:59 2024
@@ -1,5 +1,5 @@
/*
- * diff_tree.c : default diff tree processor
+ * diff_tree_reverse.c : reverse diff tree processor
*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
@@ -27,207 +27,13 @@
#include <assert.h>
-#include "svn_dirent_uri.h"
#include "svn_error.h"
-#include "svn_io.h"
-#include "svn_pools.h"
#include "svn_props.h"
#include "svn_types.h"
#include "private/svn_diff_tree.h"
#include "svn_private_config.h"
-static svn_error_t *
-default_dir_opened(void **new_dir_baton,
- svn_boolean_t *skip,
- svn_boolean_t *skip_children,
- const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const svn_diff_source_t *copyfrom_source,
- void *parent_dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- *new_dir_baton = NULL;
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_dir_added(const char *relpath,
- const svn_diff_source_t *copyfrom_source,
- const svn_diff_source_t *right_source,
- /*const*/ apr_hash_t *copyfrom_props,
- /*const*/ apr_hash_t *right_props,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(processor->dir_closed(relpath, NULL, right_source,
- dir_baton, processor,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_dir_deleted(const char *relpath,
- const svn_diff_source_t *left_source,
- /*const*/ apr_hash_t *left_props,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(processor->dir_closed(relpath, left_source, NULL,
- dir_baton, processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_dir_changed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- /*const*/ apr_hash_t *left_props,
- /*const*/ apr_hash_t *right_props,
- const apr_array_header_t *prop_changes,
- void *dir_baton,
- const struct svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(processor->dir_closed(relpath,
- left_source, right_source,
- dir_baton,
- processor, scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_dir_closed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_file_opened(void **new_file_baton,
- svn_boolean_t *skip,
- const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const svn_diff_source_t *copyfrom_source,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- *new_file_baton = dir_baton;
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_file_added(const char *relpath,
- const svn_diff_source_t *copyfrom_source,
- const svn_diff_source_t *right_source,
- const char *copyfrom_file,
- const char *right_file,
- /*const*/ apr_hash_t *copyfrom_props,
- /*const*/ apr_hash_t *right_props,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(processor->file_closed(relpath,
- NULL, right_source,
- file_baton, processor, scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_file_deleted(const char *relpath,
- const svn_diff_source_t *left_source,
- const char *left_file,
- /*const*/ apr_hash_t *left_props,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(processor->file_closed(relpath,
- left_source, NULL,
- file_baton, processor, scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_file_changed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const char *left_file,
- const char *right_file,
- /*const*/ apr_hash_t *left_props,
- /*const*/ apr_hash_t *right_props,
- svn_boolean_t file_modified,
- const apr_array_header_t *prop_changes,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- SVN_ERR(processor->file_closed(relpath,
- left_source, right_source,
- file_baton, processor, scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_file_closed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-default_node_absent(const char *relpath,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- return SVN_NO_ERROR;
-}
-
-svn_diff_tree_processor_t *
-svn_diff__tree_processor_create(void *baton,
- apr_pool_t *result_pool)
-{
- svn_diff_tree_processor_t *tp = apr_pcalloc(result_pool, sizeof(*tp));
-
- tp->baton = baton;
-
- tp->dir_opened = default_dir_opened;
- tp->dir_added = default_dir_added;
- tp->dir_deleted = default_dir_deleted;
- tp->dir_changed = default_dir_changed;
- tp->dir_closed = default_dir_closed;
-
- tp->file_opened = default_file_opened;
- tp->file_added = default_file_added;
- tp->file_deleted = default_file_deleted;
- tp->file_changed = default_file_changed;
- tp->file_closed = default_file_closed;
-
- tp->node_absent = default_node_absent;
-
- return tp;
-}
-
struct reverse_tree_baton_t
{
const svn_diff_tree_processor_t *processor;
@@ -531,370 +337,3 @@ svn_diff__tree_processor_reverse_create(
return reverse;
}
-
-struct copy_as_changed_baton_t
-{
- const svn_diff_tree_processor_t *processor;
-};
-
-static svn_error_t *
-copy_as_changed_dir_opened(void **new_dir_baton,
- svn_boolean_t *skip,
- svn_boolean_t *skip_children,
- const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const svn_diff_source_t *copyfrom_source,
- void *parent_dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- if (!left_source && copyfrom_source)
- {
- assert(right_source != NULL);
-
- left_source = copyfrom_source;
- copyfrom_source = NULL;
- }
-
- SVN_ERR(cb->processor->dir_opened(new_dir_baton, skip, skip_children,
- relpath,
- left_source, right_source,
- copyfrom_source,
- parent_dir_baton,
- cb->processor,
- result_pool, scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_dir_added(const char *relpath,
- const svn_diff_source_t *copyfrom_source,
- const svn_diff_source_t *right_source,
- /*const*/ apr_hash_t *copyfrom_props,
- /*const*/ apr_hash_t *right_props,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- if (copyfrom_source)
- {
- apr_array_header_t *propchanges;
- SVN_ERR(svn_prop_diffs(&propchanges, right_props, copyfrom_props,
- scratch_pool));
- SVN_ERR(cb->processor->dir_changed(relpath,
- copyfrom_source,
- right_source,
- copyfrom_props,
- right_props,
- propchanges,
- dir_baton,
- cb->processor,
- scratch_pool));
- }
- else
- {
- SVN_ERR(cb->processor->dir_added(relpath,
- copyfrom_source,
- right_source,
- copyfrom_props,
- right_props,
- dir_baton,
- cb->processor,
- scratch_pool));
- }
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_dir_deleted(const char *relpath,
- const svn_diff_source_t *left_source,
- /*const*/ apr_hash_t *left_props,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->dir_deleted(relpath,
- left_source,
- left_props,
- dir_baton,
- cb->processor,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_dir_changed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- /*const*/ apr_hash_t *left_props,
- /*const*/ apr_hash_t *right_props,
- const apr_array_header_t *prop_changes,
- void *dir_baton,
- const struct svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->dir_changed(relpath,
- left_source,
- right_source,
- left_props,
- right_props,
- prop_changes,
- dir_baton,
- cb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_dir_closed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->dir_closed(relpath,
- left_source,
- right_source,
- dir_baton,
- cb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_file_opened(void **new_file_baton,
- svn_boolean_t *skip,
- const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const svn_diff_source_t *copyfrom_source,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- if (!left_source && copyfrom_source)
- {
- assert(right_source != NULL);
-
- left_source = copyfrom_source;
- copyfrom_source = NULL;
- }
-
- SVN_ERR(cb->processor->file_opened(new_file_baton,
- skip,
- relpath,
- left_source,
- right_source,
- copyfrom_source,
- dir_baton,
- cb->processor,
- result_pool,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_file_added(const char *relpath,
- const svn_diff_source_t *copyfrom_source,
- const svn_diff_source_t *right_source,
- const char *copyfrom_file,
- const char *right_file,
- /*const*/ apr_hash_t *copyfrom_props,
- /*const*/ apr_hash_t *right_props,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- if (copyfrom_source)
- {
- apr_array_header_t *propchanges;
- svn_boolean_t same;
- SVN_ERR(svn_prop_diffs(&propchanges, right_props, copyfrom_props,
- scratch_pool));
-
- /* "" is sometimes a marker for just modified (E.g. no-textdeltas),
- and it is certainly not a file */
- if (*copyfrom_file && *right_file)
- {
- SVN_ERR(svn_io_files_contents_same_p(&same, copyfrom_file,
- right_file, scratch_pool));
- }
- else
- same = FALSE;
-
- SVN_ERR(cb->processor->file_changed(relpath,
- copyfrom_source,
- right_source,
- copyfrom_file,
- right_file,
- copyfrom_props,
- right_props,
- !same,
- propchanges,
- file_baton,
- cb->processor,
- scratch_pool));
- }
- else
- {
- SVN_ERR(cb->processor->file_added(relpath,
- copyfrom_source,
- right_source,
- copyfrom_file,
- right_file,
- copyfrom_props,
- right_props,
- file_baton,
- cb->processor,
- scratch_pool));
- }
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_file_deleted(const char *relpath,
- const svn_diff_source_t *left_source,
- const char *left_file,
- /*const*/ apr_hash_t *left_props,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->file_deleted(relpath,
- left_source,
- left_file,
- left_props,
- file_baton,
- cb->processor,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_file_changed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- const char *left_file,
- const char *right_file,
- /*const*/ apr_hash_t *left_props,
- /*const*/ apr_hash_t *right_props,
- svn_boolean_t file_modified,
- const apr_array_header_t *prop_changes,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->file_changed(relpath,
- left_source,
- right_source,
- left_file,
- right_file,
- left_props,
- right_props,
- file_modified,
- prop_changes,
- file_baton,
- cb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_file_closed(const char *relpath,
- const svn_diff_source_t *left_source,
- const svn_diff_source_t *right_source,
- void *file_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->file_closed(relpath,
- left_source,
- right_source,
- file_baton,
- cb->processor,
- scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-copy_as_changed_node_absent(const char *relpath,
- void *dir_baton,
- const svn_diff_tree_processor_t *processor,
- apr_pool_t *scratch_pool)
-{
- struct copy_as_changed_baton_t *cb = processor->baton;
-
- SVN_ERR(cb->processor->node_absent(relpath,
- dir_baton,
- cb->processor,
- scratch_pool));
- return SVN_NO_ERROR;
-}
-
-
-const svn_diff_tree_processor_t *
-svn_diff__tree_processor_copy_as_changed_create(
- const svn_diff_tree_processor_t * processor,
- apr_pool_t *result_pool)
-{
- struct copy_as_changed_baton_t *cb;
- svn_diff_tree_processor_t *filter;
-
- cb = apr_pcalloc(result_pool, sizeof(*cb));
- cb->processor = processor;
-
- filter = svn_diff__tree_processor_create(cb, result_pool);
- filter->dir_opened = copy_as_changed_dir_opened;
- filter->dir_added = copy_as_changed_dir_added;
- filter->dir_deleted = copy_as_changed_dir_deleted;
- filter->dir_changed = copy_as_changed_dir_changed;
- filter->dir_closed = copy_as_changed_dir_closed;
-
- filter->file_opened = copy_as_changed_file_opened;
- filter->file_added = copy_as_changed_file_added;
- filter->file_deleted = copy_as_changed_file_deleted;
- filter->file_changed = copy_as_changed_file_changed;
- filter->file_closed = copy_as_changed_file_closed;
-
- filter->node_absent = copy_as_changed_node_absent;
-
- return filter;
-}
-
-svn_diff_source_t *
-svn_diff__source_create(svn_revnum_t revision,
- apr_pool_t *result_pool)
-{
- svn_diff_source_t *src = apr_pcalloc(result_pool, sizeof(*src));
-
- src->revision = revision;
- return src;
-}