From: Johannes Schindelin <johannes.schindelin@xxxxxx> We are about to teach `diff_warn_rename_limit()` to write into a file instead of `stderr`. That function wants to call `warning()` when writing to `stderr`, though, allowing for the `warn_routine` to be overridden. Let's introduce a helper for that. Note: Since there is currently no need to provide similar functions for `error()` or `die()`, let alone for the `_errno` variants, we will leave that to a date when the need for those should arise, if ever. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> Signed-off-by: Elijah Newren <newren@xxxxxxxxx> --- git-compat-util.h | 1 + usage.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/git-compat-util.h b/git-compat-util.h index d70ce142861..64ba60e5c71 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -475,6 +475,7 @@ int error(const char *err, ...) __attribute__((format (printf, 1, 2))); int error_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); void warning(const char *err, ...) __attribute__((format (printf, 1, 2))); void warning_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); +void warning_fp(FILE *out, const char *warn, ...) __attribute__((format (printf, 2, 3))); #ifndef NO_OPENSSL #ifdef APPLE_COMMON_CRYPTO diff --git a/usage.c b/usage.c index c7d233b0de9..0bfd2c603c0 100644 --- a/usage.c +++ b/usage.c @@ -253,6 +253,20 @@ void warning(const char *warn, ...) va_end(params); } +void warning_fp(FILE *out, const char *warn, ...) +{ + va_list params; + + va_start(params, warn); + if (out == stderr) + warn_routine(warn, params); + else { + vfprintf(out, warn, params); + fputc('\n', out); + } + va_end(params); +} + /* Only set this, ever, from t/helper/, when verifying that bugs are caught. */ int BUG_exit_code; -- gitgitgadget