1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-04-28 10:55:11 +02:00

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>
This commit is contained in:
Junio C Hamano 2020-09-10 10:01:55 -07:00
parent 88910c9939
commit f3fc4a1b86
3 changed files with 11 additions and 12 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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);
}