From: Jeff King Date: Fri, 8 Jul 2016 09:25:23 +0000 (-0400) Subject: walker: let walker_say take arbitrary formats X-Git-Tag: v2.10.0-rc0~103^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fa262cac766d383c51e0ead04c62e114a79bd738;p=git walker: let walker_say take arbitrary formats We take a printf-style format and a single "char *" parameter, and the format must therefore have at most one "%s" in it. Besides being error-prone (and tickling -Wformat-nonliteral), this is unnecessarily restrictive. We can just provide the usual varargs interface. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff --git a/walker.c b/walker.c index d95b007294..2c86e406f9 100644 --- a/walker.c +++ b/walker.c @@ -9,10 +9,14 @@ static unsigned char current_commit_sha1[20]; -void walker_say(struct walker *walker, const char *fmt, const char *hex) +void walker_say(struct walker *walker, const char *fmt, ...) { - if (walker->get_verbosely) - fprintf(stderr, fmt, hex); + if (walker->get_verbosely) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + } } static void report_missing(const struct object *obj) diff --git a/walker.h b/walker.h index 95e5765484..a869013e85 100644 --- a/walker.h +++ b/walker.h @@ -19,7 +19,8 @@ struct walker { }; /* Report what we got under get_verbosely */ -void walker_say(struct walker *walker, const char *, const char *); +__attribute__((format (printf, 2, 3))) +void walker_say(struct walker *walker, const char *fmt, ...); /* Load pull targets from stdin */ int walker_targets_stdin(char ***target, const char ***write_ref);