]> granicus.if.org Git - git/commitdiff
walker: let walker_say take arbitrary formats
authorJeff King <peff@peff.net>
Fri, 8 Jul 2016 09:25:23 +0000 (05:25 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 8 Jul 2016 17:11:23 +0000 (10:11 -0700)
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 <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
walker.c
walker.h

index d95b007294c84dafcc391edb7813c15523b03633..2c86e406f92d9bf0063e6be4f9d76fdbbac17c89 100644 (file)
--- 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)
index 95e576548474e942addcf1978f215720dd2f6e96..a869013e85110a0b64d8fe344c8bd67f5e8f7f09 100644 (file)
--- 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);