http: eliminate hard-coded constants
Use the_hash_algo to find the right size for parsing pack names. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
70c369cde0
commit
dd724bcb2f
13
http.c
13
http.c
@ -2047,7 +2047,8 @@ int http_get_info_packs(const char *base_url, struct packed_git **packs_head)
|
|||||||
int ret = 0, i = 0;
|
int ret = 0, i = 0;
|
||||||
char *url, *data;
|
char *url, *data;
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
unsigned char sha1[20];
|
unsigned char hash[GIT_MAX_RAWSZ];
|
||||||
|
const unsigned hexsz = the_hash_algo->hexsz;
|
||||||
|
|
||||||
end_url_with_slash(&buf, base_url);
|
end_url_with_slash(&buf, base_url);
|
||||||
strbuf_addstr(&buf, "objects/info/packs");
|
strbuf_addstr(&buf, "objects/info/packs");
|
||||||
@ -2063,13 +2064,13 @@ int http_get_info_packs(const char *base_url, struct packed_git **packs_head)
|
|||||||
switch (data[i]) {
|
switch (data[i]) {
|
||||||
case 'P':
|
case 'P':
|
||||||
i++;
|
i++;
|
||||||
if (i + 52 <= buf.len &&
|
if (i + hexsz + 12 <= buf.len &&
|
||||||
starts_with(data + i, " pack-") &&
|
starts_with(data + i, " pack-") &&
|
||||||
starts_with(data + i + 46, ".pack\n")) {
|
starts_with(data + i + hexsz + 6, ".pack\n")) {
|
||||||
get_sha1_hex(data + i + 6, sha1);
|
get_sha1_hex(data + i + 6, hash);
|
||||||
fetch_and_setup_pack_index(packs_head, sha1,
|
fetch_and_setup_pack_index(packs_head, hash,
|
||||||
base_url);
|
base_url);
|
||||||
i += 51;
|
i += hexsz + 11;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user