From 30a0ddb705678d512185e359831479a6b3567147 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Wed, 18 Jun 2014 16:01:34 -0400 Subject: strbuf: add xstrfmt helper You can use a strbuf to build up a string from parts, and then detach it. In the general case, you might use multiple strbuf_add* functions to do the building. However, in many cases, a single strbuf_addf is sufficient, and we end up with: struct strbuf buf = STRBUF_INIT; ... strbuf_addf(&buf, fmt, some, args); str = strbuf_detach(&buf, NULL); We can make this much more readable (and avoid introducing an extra variable, which can clutter the code) by introducing a convenience function: str = xstrfmt(fmt, some, args); Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- strbuf.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'strbuf.h') diff --git a/strbuf.h b/strbuf.h index e9ad03eabe..a594c24b2b 100644 --- a/strbuf.h +++ b/strbuf.h @@ -187,4 +187,13 @@ extern int fprintf_ln(FILE *fp, const char *fmt, ...); char *xstrdup_tolower(const char *); +/* + * Create a newly allocated string using printf format. You can do this easily + * with a strbuf, but this provides a shortcut to save a few lines. + */ +__attribute__((format (printf, 1, 0))) +char *xstrvfmt(const char *fmt, va_list ap); +__attribute__((format (printf, 1, 2))) +char *xstrfmt(const char *fmt, ...); + #endif /* STRBUF_H */ -- cgit v1.2.3