diff options
author | Jeff Hostetler <jeffhost@microsoft.com> | 2019-08-09 08:00:55 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-08-09 10:48:02 -0700 |
commit | c2b890aca50885ce7503dfe4bdae4ac83bbb2331 (patch) | |
tree | 1005f669636aba9bd5d4da4a57d16b8ede5a0020 | |
parent | trace2: trim trailing whitespace in normal format error message (diff) | |
download | tgif-c2b890aca50885ce7503dfe4bdae4ac83bbb2331.tar.xz |
quote: add sq_append_quote_argv_pretty()
sq_quote_argv_pretty() builds a "pretty" string from the given argv.
It inserts whitespace before each value, rather than just between
them, so the resulting string always has a leading space. Lets give
callers an option to not have the leading space or have to ltrim()
it later.
Create sq_append_quote_argv_pretty() to convert an argv into a
pretty, quoted if necessary, string with space delimiters and
without a leading space.
Convert the existing sq_quote_argv_pretty() to use this new routine
while preserving the leading space behavior.
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | quote.c | 18 | ||||
-rw-r--r-- | quote.h | 1 |
2 files changed, 18 insertions, 1 deletions
@@ -84,12 +84,28 @@ void sq_quote_argv(struct strbuf *dst, const char **argv) } } +/* + * Legacy function to append each argv value, quoted as necessasry, + * with whitespace before each value. This results in a leading + * space in the result. + */ void sq_quote_argv_pretty(struct strbuf *dst, const char **argv) { + if (argv[0]) + strbuf_addch(dst, ' '); + sq_append_quote_argv_pretty(dst, argv); +} + +/* + * Append each argv value, quoted as necessary, with whitespace between them. + */ +void sq_append_quote_argv_pretty(struct strbuf *dst, const char **argv) +{ int i; for (i = 0; argv[i]; i++) { - strbuf_addch(dst, ' '); + if (i > 0) + strbuf_addch(dst, ' '); sq_quote_buf_pretty(dst, argv[i]); } } @@ -40,6 +40,7 @@ void sq_quotef(struct strbuf *, const char *fmt, ...); */ void sq_quote_buf_pretty(struct strbuf *, const char *src); void sq_quote_argv_pretty(struct strbuf *, const char **argv); +void sq_append_quote_argv_pretty(struct strbuf *dst, const char **argv); /* This unwraps what sq_quote() produces in place, but returns * NULL if the input does not look like what sq_quote would have |