Re: [PATCH 2/3] credential: teach `credential_from_url()` a non-strict mode
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Apr 23, 2020, 23:22 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2004240121180.18039@tvgsbejvaqbjf.bet>
- In-Reply-To
- <xmqqtv19etkx.fsf@gitster.c.googlers.com>
Hi Junio,
On Thu, 23 Apr 2020, Junio C Hamano wrote:
Show 21 quoted lines
> Junio C Hamano <gitster@pobox.com> writes: > > > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > > > >> Yes (modulo doing "greater than" comparison on pointers which is IIRC not > >> permitted in C in general). > > > > Of course, people write a loop like this > > > > char *cp, *ep = strchr(string, '\n'); > > > > for (cp = string; cp < ep; cp++) > > ... > > > > all the time, and forbidding pointer comparison would make the > > language impossible to use ;-) > > > > I think you are confused with a different rule---what is not kosher > > is to compare two pointers that do not point into elements of the > > same array. Whether the comparison is done in (ptr1 < ptr2) way, or > > (ptr2 - ptr1 < 0) way, does not change the equation.
Yep, that's my confusion all right.
Show 12 quoted lines
> Having said that, between > > 1. if (strict || slash - url > 0) > 2. if (strict || slash > url) > c->host = url_decode_mem(host, slash - host); > > I think the former is moderately easier to read. It still has the > same "Huh?" factor that a comparison between slash and URL guards > the size of the region being decoded, which is slash - host, and > makes the reader wonder how these two variables, URL and host, > relate to each other at this point in the code, though, either way > the comparison is spelled.
I fully agree! That's why I use `strict || slash - host > 0` in my next iteration (actually, I decided to rename `strict`, but that's beside the point).
Ciao, Dscho