summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Hostetler <jeffhost@microsoft.com>2019-08-09 15:00:55 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-08-09 17:48:02 (GMT)
commitc2b890aca50885ce7503dfe4bdae4ac83bbb2331 (patch)
tree1005f669636aba9bd5d4da4a57d16b8ede5a0020
parentad43e37839ea6a3cf369af074a723a60cd66233b (diff)
downloadgit-c2b890aca50885ce7503dfe4bdae4ac83bbb2331.zip
git-c2b890aca50885ce7503dfe4bdae4ac83bbb2331.tar.gz
git-c2b890aca50885ce7503dfe4bdae4ac83bbb2331.tar.bz2
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.c18
-rw-r--r--quote.h1
2 files changed, 18 insertions, 1 deletions
diff --git a/quote.c b/quote.c
index 7f2aa6f..c8ba6b3 100644
--- a/quote.c
+++ b/quote.c
@@ -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]);
}
}
diff --git a/quote.h b/quote.h
index fb08dc0..ca8ee31 100644
--- a/quote.h
+++ b/quote.h
@@ -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