diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-09-10 10:01:55 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-09-10 10:49:20 -0700 |
commit | f3fc4a1b8680c114defd98ce6f2429f8946a5dc1 (patch) | |
tree | 4d40269465613f8ae72d3029a43234c9dbeed2a4 | |
parent | quote_path: give flags parameter to quote_path() (diff) | |
download | tgif-f3fc4a1b8680c114defd98ce6f2429f8946a5dc1.tar.xz |
quote_path: optionally allow quoting a path with SP in it
Some code in wt-status.c special case a path with SP in it, which
usually does not have to be c-quoted, and ensure that such a path
does get quoted. Move the logic to quote_path() and give it a bit
in the flags word, QUOTE_PATH_QUOTE_SP.
No behaviour change intended.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | quote.c | 7 | ||||
-rw-r--r-- | quote.h | 1 | ||||
-rw-r--r-- | wt-status.c | 15 |
3 files changed, 11 insertions, 12 deletions
@@ -360,6 +360,13 @@ char *quote_path(const char *in, const char *prefix, struct strbuf *out, unsigne quote_c_style_counted(rel, strlen(rel), out, NULL, 0); strbuf_release(&sb); + if ((flags & QUOTE_PATH_QUOTE_SP) && + (out->buf[0] != '"' && strchr(out->buf, ' '))) { + /* Ensure the whole thing is quoted if the path has SP in it */ + strbuf_insertstr(out, 0, "\""); + strbuf_addch(out, '"'); + } + return out->buf; } @@ -73,6 +73,7 @@ void write_name_quoted_relative(const char *name, const char *prefix, /* quote path as relative to the given prefix */ char *quote_path(const char *in, const char *prefix, struct strbuf *out, unsigned flags); +#define QUOTE_PATH_QUOTE_SP 01 /* quoting as a string literal for other languages */ void perl_quote_buf(struct strbuf *sb, const char *src); diff --git a/wt-status.c b/wt-status.c index d6ca7bd52c..adbf6958bd 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1877,21 +1877,12 @@ static void wt_shortstatus_status(struct string_list_item *it, const char *one; if (d->rename_source) { - one = quote_path(d->rename_source, s->prefix, &onebuf, 0); - if (*one != '"' && strchr(one, ' ') != NULL) { - putchar('"'); - strbuf_addch(&onebuf, '"'); - one = onebuf.buf; - } + one = quote_path(d->rename_source, s->prefix, &onebuf, + QUOTE_PATH_QUOTE_SP); printf("%s -> ", one); strbuf_release(&onebuf); } - one = quote_path(it->string, s->prefix, &onebuf, 0); - if (*one != '"' && strchr(one, ' ') != NULL) { - putchar('"'); - strbuf_addch(&onebuf, '"'); - one = onebuf.buf; - } + one = quote_path(it->string, s->prefix, &onebuf, QUOTE_PATH_QUOTE_SP); printf("%s\n", one); strbuf_release(&onebuf); } |