summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2016-07-08 05:25:23 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-07-08 10:11:23 -0700
commitfa262cac766d383c51e0ead04c62e114a79bd738 (patch)
tree2f70b803554a41d5eee0e2b5ee4f7bcd846e591e
parentThird batch of topics for 2.10 (diff)
downloadtgif-fa262cac766d383c51e0ead04c62e114a79bd738.tar.xz
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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--walker.c10
-rw-r--r--walker.h3
2 files changed, 9 insertions, 4 deletions
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);