From: Johannes Schindelin <Johannes.Schindelin@xxxxxx> 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 <Johannes.Schindelin@xxxxxx> Signed-off-by: Elijah Newren <newren@xxxxxxxxx> --- 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