Browse Source

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>
maint
Jeff Hostetler 6 years ago committed by Junio C Hamano
parent
commit
c2b890aca5
  1. 18
      quote.c
  2. 1
      quote.h

18
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) 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; int i;


for (i = 0; argv[i]; i++) { for (i = 0; argv[i]; i++) {
strbuf_addch(dst, ' '); if (i > 0)
strbuf_addch(dst, ' ');
sq_quote_buf_pretty(dst, argv[i]); sq_quote_buf_pretty(dst, argv[i]);
} }
} }

1
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_buf_pretty(struct strbuf *, const char *src);
void sq_quote_argv_pretty(struct strbuf *, const char **argv); 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 /* This unwraps what sq_quote() produces in place, but returns
* NULL if the input does not look like what sq_quote would have * NULL if the input does not look like what sq_quote would have

Loading…
Cancel
Save