show_interdiff() is a relatively small function and not likely to grow larger or more complicated. Rather than dedicating an entire source file to it, relocate it to diff-lib.c which houses other "take two things and compare them" functions meant to be re-used but not so low-level as to reside in the core diff implementation. Signed-off-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> --- Notes: Suggested by Duy[1] and seconded by Junio[2] during review. [1]: https://lore.kernel.org/git/CACsJy8C8RK6HkfoEYJGZg=sgtJS0WksHD3=7Souw3jYebRo=Sg@xxxxxxxxxxxxxx/ [2]: https://lore.kernel.org/git/xmqqh8kp4otz.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx/ Makefile | 1 - builtin/log.c | 1 - diff-lib.c | 24 ++++++++++++++++++++++++ diff.h | 2 ++ interdiff.c | 28 ---------------------------- interdiff.h | 8 -------- log-tree.c | 1 - 7 files changed, 26 insertions(+), 39 deletions(-) delete mode 100644 interdiff.c delete mode 100644 interdiff.h diff --git a/Makefile b/Makefile index 86e5411f39..cf47141939 100644 --- a/Makefile +++ b/Makefile @@ -883,7 +883,6 @@ LIB_OBJS += hashmap.o LIB_OBJS += help.o LIB_OBJS += hex.o LIB_OBJS += ident.o -LIB_OBJS += interdiff.o LIB_OBJS += json-writer.o LIB_OBJS += kwset.o LIB_OBJS += levenshtein.o diff --git a/builtin/log.c b/builtin/log.c index b58f8da09e..ae9380da1b 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -33,7 +33,6 @@ #include "commit-slab.h" #include "repository.h" #include "commit-reach.h" -#include "interdiff.h" #include "range-diff.h" #define MAIL_DEFAULT_WRAP 72 diff --git a/diff-lib.c b/diff-lib.c index 50521e2093..9bab907412 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -571,3 +571,27 @@ int index_differs_from(struct repository *r, object_array_clear(&rev.pending); return (rev.diffopt.flags.has_changes != 0); } + +static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data) +{ + return data; +} + +void show_interdiff(struct rev_info *rev, int indent) +{ + struct diff_options opts; + struct strbuf prefix = STRBUF_INIT; + + memcpy(&opts, &rev->diffopt, sizeof(opts)); + opts.output_format = DIFF_FORMAT_PATCH; + opts.output_prefix = idiff_prefix_cb; + strbuf_addchars(&prefix, ' ', indent); + opts.output_prefix_data = &prefix; + diff_setup_done(&opts); + + diff_tree_oid(rev->idiff_oid1, rev->idiff_oid2, "", &opts); + diffcore_std(&opts); + diff_flush(&opts); + + strbuf_release(&prefix); +} diff --git a/diff.h b/diff.h index e0c0af6286..308937c94b 100644 --- a/diff.h +++ b/diff.h @@ -600,6 +600,8 @@ int index_differs_from(struct repository *r, const char *def, const struct diff_flags *flags, int ita_invisible_in_index); +void show_interdiff(struct rev_info *, int indent); + /* * Fill the contents of the filespec "df", respecting any textconv defined by * its userdiff driver. The "driver" parameter must come from a diff --git a/interdiff.c b/interdiff.c deleted file mode 100644 index c81d680a6c..0000000000 --- a/interdiff.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "cache.h" -#include "commit.h" -#include "revision.h" -#include "interdiff.h" - -static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data) -{ - return data; -} - -void show_interdiff(struct rev_info *rev, int indent) -{ - struct diff_options opts; - struct strbuf prefix = STRBUF_INIT; - - memcpy(&opts, &rev->diffopt, sizeof(opts)); - opts.output_format = DIFF_FORMAT_PATCH; - opts.output_prefix = idiff_prefix_cb; - strbuf_addchars(&prefix, ' ', indent); - opts.output_prefix_data = &prefix; - diff_setup_done(&opts); - - diff_tree_oid(rev->idiff_oid1, rev->idiff_oid2, "", &opts); - diffcore_std(&opts); - diff_flush(&opts); - - strbuf_release(&prefix); -} diff --git a/interdiff.h b/interdiff.h deleted file mode 100644 index 01c730a5c9..0000000000 --- a/interdiff.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef INTERDIFF_H -#define INTERDIFF_H - -struct rev_info; - -void show_interdiff(struct rev_info *, int indent); - -#endif diff --git a/log-tree.c b/log-tree.c index 55a68d0c61..39bb362d5e 100644 --- a/log-tree.c +++ b/log-tree.c @@ -15,7 +15,6 @@ #include "sequencer.h" #include "line-log.h" #include "help.h" -#include "interdiff.h" #include "range-diff.h" static struct decoration name_decoration = { "object names" }; -- 2.28.0.618.gf4bc123cb7