Thread (1 message) 1 message, 1 author, 2020-09-10

Re: [Bug report] git status doesn't escape paths of untracked files

From: Junio C Hamano <hidden>
Date: 2020-09-10 19:45:09

René Scharfe [off-list ref] writes:
quoted
quoted
+	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..
The logic to refrain from ading extra dq-pair around the output from
quote-c-style is "if it is already in a dq-pair, don't bother".  The
bug will trigger only when the input string has a character that
needs to be quoted *and* SP in it.  In such a case, relative_path()
is likely to return *rel != '"' and you declare "we need to add a
dq-pair ourselves", quote-c-style would give us a result in a
dq-pair, and you add one extra layer.  

But without a test with a path with both '"' and ' ' in it, such a
bug would not trigger.  Brian's test only checks what happens to a
path with SP in it, without any other funny characters that need
quoting with quote-c-style.

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help