Skip to content

Commit c2b890a

Browse files
jeffhostetlergitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent ad43e37 commit c2b890a

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

quote.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,28 @@ void sq_quote_argv(struct strbuf *dst, const char **argv)
8484
}
8585
}
8686

87+
/*
88+
* Legacy function to append each argv value, quoted as necessasry,
89+
* with whitespace before each value. This results in a leading
90+
* space in the result.
91+
*/
8792
void sq_quote_argv_pretty(struct strbuf *dst, const char **argv)
93+
{
94+
if (argv[0])
95+
strbuf_addch(dst, ' ');
96+
sq_append_quote_argv_pretty(dst, argv);
97+
}
98+
99+
/*
100+
* Append each argv value, quoted as necessary, with whitespace between them.
101+
*/
102+
void sq_append_quote_argv_pretty(struct strbuf *dst, const char **argv)
88103
{
89104
int i;
90105

91106
for (i = 0; argv[i]; i++) {
92-
strbuf_addch(dst, ' ');
107+
if (i > 0)
108+
strbuf_addch(dst, ' ');
93109
sq_quote_buf_pretty(dst, argv[i]);
94110
}
95111
}

quote.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ void sq_quotef(struct strbuf *, const char *fmt, ...);
4040
*/
4141
void sq_quote_buf_pretty(struct strbuf *, const char *src);
4242
void sq_quote_argv_pretty(struct strbuf *, const char **argv);
43+
void sq_append_quote_argv_pretty(struct strbuf *dst, const char **argv);
4344

4445
/* This unwraps what sq_quote() produces in place, but returns
4546
* NULL if the input does not look like what sq_quote would have

0 commit comments

Comments
 (0)