Re: [PATCH 10/44] connect: add function to detect supported v1 hash functions
- From
- Martin Ågren <martin.agren@gmail.com>
- Date
- May 13, 2020, 19:39 UTC
- Message-ID
- <CAN0heSosiP=vCcd1QBmWNsVUuHTmRJbjGrWV9tU0=BSU1ENmDQ@mail.gmail.com>
- In-Reply-To
- <20200513005424.81369-11-sandals@crustytoothpaste.net>
On Wed, 13 May 2020 at 02:56, brian m. carlson <sandals@crustytoothpaste.net> wrote:
> Add a function, server_supports_hash, to see if the remote server > supports a particular hash algorithm when speaking protocol v1.
Show 9 quoted lines
> +int server_supports_hash(const char *desired, int *feature_supported)
> +{
> + int offset = 0;
> + int len, found = 0;
> + const char *hash;
> +
> + hash = next_server_feature_value("object-format", &len, &offset);
> + if (feature_supported)
> + *feature_supported = !!hash;If we got something, anything, the server supports this feature. It just remains to see if it supports the exact algorithm we're after.
> + if (!hash) {
> + hash = hash_algos[GIT_HASH_SHA1].name;
> + len = strlen(hash);
> + }OK, if the server doesn't say anything, we fall back to SHA-1. If it's the desired one, we'll return 1 accordingly below.
Show 6 quoted lines
> + while (hash) {
> + if (!xstrncmpz(desired, hash, len))
> + found = 1;
> +
> + if (found)
> + return 1;I first thought this structure was because this loop body would learn to do something else later in the series. But this is it. This looks like it could just be "if (!xstrncmpz(...)) return 1;" and drop "found".
> + hash = next_server_feature_value("object-format", &len, &offset);
> + }
> + return 0;
> +}Martin