Re: [PATCH 3/3] shorten_unambiguous_ref(): avoid sscanf()
- From
Jeff King <peff@peff.net>
- Date
- Feb 15, 2023, 14:30 UTC
- Message-ID
- <Y+zslp55nmAQ5Fvi@coredump.intra.peff.net>
- In-Reply-To
- <xmqqsff71plf.fsf@gitster.g>
On Tue, Feb 14, 2023 at 09:10:04PM -0800, Junio C Hamano wrote:
Show 20 quoted lines
> Jeff King <peff@peff.net> writes: > > > It does indeed. I pulled the logic from skip_prefix(), thinking that by > > relying on it I would avoid making a stupid mistake. Oh well. :) > > > > Doing it like this is much more readable: > > ... > > I'll hold on to that (plus an adjustment to the comment below to match, > > and perhaps a test for this negative-match case) for a day or so to give > > anybody else a chance to comment, and then send out a v2 tomorrow. > > Thanks, and surely that is very readable. > > Alternatively, I think you can just compare refname and rule until > they diverge, without doing any special casing for per-cent on the > rule side inside the loop. > > If you do not find any difference, or the byte that differ is not > the per-cent at the beginning of "%.*s" on the rule side, they they > do not match.
I had a similar thought, but I think it is fooled by "refs/heads/%foo". The correct shortening there is "%foo". But we'd parse the "refs/heads/%.*s" rule up to the ".", and then complain that they do not match.
-Peff