[PATCH v2 05/13] diff: allow diff_warn_rename_limit to write somewhere besides stdout
From: Johannes Schindelin via GitGitGadget <hidden>
Date: 2022-01-29 18:07:31
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Johannes Schindelin <redacted> diff_warn_rename_limit() is hardcoded to write to stdout. Make it accept an output location parameter to make it more flexible. Signed-off-by: Johannes Schindelin <redacted> Signed-off-by: Elijah Newren <redacted> --- diff.c | 20 ++++++++++++++------ diff.h | 3 ++- merge-ort.c | 2 +- merge-recursive.c | 3 ++- 4 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/diff.c b/diff.c
index 1bfb01c18ec..6952035046f 100644
--- a/diff.c
+++ b/diff.c@@ -6377,17 +6377,25 @@ static const char rename_limit_advice[] = N_("you may want to set your %s variable to at least " "%d and retry the command."); -void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc) +void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc, + FILE *out) { - fflush(stdout); + const char *fmt = NULL; + if (degraded_cc) - warning(_(degrade_cc_to_c_warning)); + fmt = _(degrade_cc_to_c_warning); else if (needed) - warning(_(rename_limit_warning)); + fmt = _(rename_limit_warning); else return; if (0 < needed) - warning(_(rename_limit_advice), varname, needed); + fmt = _(rename_limit_advice); + + fflush(out); + if (out == stdout) + warning(fmt, varname, needed); + else + fprintf(out, fmt, varname, needed); } static void create_filepairs_for_header_only_notifications(struct diff_options *o)
@@ -6870,7 +6878,7 @@ int diff_result_code(struct diff_options *opt, int status) diff_warn_rename_limit("diff.renameLimit", opt->needed_rename_limit, - opt->degraded_cc_to_c); + opt->degraded_cc_to_c, stdout); if (!opt->flags.exit_with_status && !(opt->output_format & DIFF_FORMAT_CHECKDIFF)) return status;
diff --git a/diff.h b/diff.h
index ce9e2cf2e4f..40c5b78fb0a 100644
--- a/diff.h
+++ b/diff.h@@ -597,7 +597,8 @@ void diffcore_fix_diff_index(void); int diff_queue_is_empty(struct diff_options *o); void diff_flush(struct diff_options*); void diff_free(struct diff_options*); -void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc); +void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc, + FILE *out); /* diff-raw status letters */ #define DIFF_STATUS_ADDED 'A'
diff --git a/merge-ort.c b/merge-ort.c
index 9bf15a01db8..65618048b59 100644
--- a/merge-ort.c
+++ b/merge-ort.c@@ -4305,7 +4305,7 @@ void merge_switch_to_result(struct merge_options *opt, /* Also include needed rename limit adjustment now */ diff_warn_rename_limit("merge.renamelimit", - opti->renames.needed_limit, 0); + opti->renames.needed_limit, 0, stdout); trace2_region_leave("merge", "display messages", opt->repo); }
diff --git a/merge-recursive.c b/merge-recursive.c
index 9ec1e6d043a..d2eeca9fa20 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c@@ -3738,7 +3738,8 @@ static void merge_finalize(struct merge_options *opt) strbuf_release(&opt->obuf); if (show(opt, 2)) diff_warn_rename_limit("merge.renamelimit", - opt->priv->needed_rename_limit, 0); + opt->priv->needed_rename_limit, 0, + stdout); FREE_AND_NULL(opt->priv); }
--
gitgitgadget