Re: [PATCH 2/2] convert trivial uses of strncmp() to skip_prefix()
- From
Jeff King <peff@peff.net>
- Date
- Jan 7, 2023, 13:33 UTC
- Message-ID
- <Y7l0mq6khtlgxGca@coredump.intra.peff.net>
- In-Reply-To
- <Y7lzFG9gyDrOE4Xt@coredump.intra.peff.net>
On Sat, Jan 07, 2023 at 08:26:45AM -0500, Jeff King wrote:
> Note in the case in ws.c that to get rid of the magic number "9" > completely, we also switch out "len" for recomputing the pointer > difference. These are equivalent because "len" is always "ep - string".
By the way, one thing I noticed about this parse_whitespace_rule() function is that it's very loose about its matching. It does:
for (i = 0; i < ARRAY_SIZE(whitespace_rule_names); i++) {
if (strncmp(whitespace_rule_names[i].rule_name,
string, len))
continue;
...we matched...
break;
}So it will prefix-match any of the options, even if there are ambiguities. E.g.:
git -c core.whitespace=-t show
will turn off "trailing-space", even though it would also match "tab-in-indent". It would be easy enough to fix it to require the whole name, but I wasn't sure if this prefix-matching was supposed to be a feature (it doesn't seem to be documented anywhere, though).
-Peff