Re: [Bug report] git status doesn't escape paths of untracked files
- From
René Scharfe <l.s.r@web.de>
- Date
- Sep 10, 2020, 14:23 UTC
- Message-ID
- <b48b2be0-c417-9140-54f1-73d0c59c40d5@web.de>
- In-Reply-To
- <xmqqa6xytwtn.fsf@gitster.c.googlers.com>
Am 10.09.20 um 00:22 schrieb Junio C Hamano:
Show 31 quoted lines
> René Scharfe <l.s.r@web.de> writes:
>> diff --git a/wt-status.c b/wt-status.c
>> index ff43932402..e0711aff04 100644
>> --- a/wt-status.c
>> +++ b/wt-status.c
>> @@ -1829,19 +1829,19 @@ static void wt_longstatus_print(struct wt_status *s)
>> wt_longstatus_print_stash_summary(s);
>> }
>>
>> -static void print_cquoted(const char *fmt, const char *path, const char *prefix)
>> +static const char *cquote(const char *in, const char *prefix, struct strbuf *out)
>> {
>> - struct strbuf onebuf = STRBUF_INIT;
>> - const char *one;
>> -
>> - one = quote_path(path, prefix, &onebuf);
>> - if (*one != '"' && strchr(one, ' ')) {
>> - strbuf_insertstr(&onebuf, 0, "\"");
>> - strbuf_addch(&onebuf, '"');
>> - one = onebuf.buf;
>> - }
>> - printf(fmt, one);
>> - strbuf_release(&onebuf);
>> + struct strbuf sb = STRBUF_INIT;
>> + const char *rel = relative_path(in, prefix, &sb);
>> + int need_quotes = *rel != '"' && strchr(rel, ' ');
>
> relative_path() does not quote, so "begins with a dq" is not a good
> test to see "if we were to pass this string to quote_c_style(), would
> we get it back quoted already so we won't have to surround the
> result with an extra pair of dq ourselves?".Ha!, that's true. Makes me wonder how it was still able to pass the test suite, though..
Show 10 quoted lines
> >> + strbuf_reset(out); >> + if (need_quotes) >> + strbuf_addch(out, '"'); >> + quote_c_style(rel, out, NULL, 0); >> + if (need_quotes) >> + strbuf_addch(out, '"'); >> + strbuf_release(&sb); >> + return out->buf; >> }