summaryrefslogtreecommitdiff
path: root/quote.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-09-10 17:01:55 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-09-10 17:49:20 (GMT)
commitf3fc4a1b8680c114defd98ce6f2429f8946a5dc1 (patch)
tree4d40269465613f8ae72d3029a43234c9dbeed2a4 /quote.c
parent88910c9939cee927a3ed1acca8d33a30c90b8fe5 (diff)
downloadgit-f3fc4a1b8680c114defd98ce6f2429f8946a5dc1.zip
git-f3fc4a1b8680c114defd98ce6f2429f8946a5dc1.tar.gz
git-f3fc4a1b8680c114defd98ce6f2429f8946a5dc1.tar.bz2
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>
Diffstat (limited to 'quote.c')
-rw-r--r--quote.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/quote.c b/quote.c
index a86f9f2..aa9a37b 100644
--- a/quote.c
+++ b/quote.c
@@ -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;
}