send-pack: extract parsing of "unpack" response

After sending the pack, we call receive_status() which gets
both the "unpack" line and the ref status. Let's break these
into two functions so we can call the first part
independently.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2017-03-07 08:35:57 -05:00 коммит произвёл Junio C Hamano
Родитель 6cdad1f133
Коммит 7c39df2979
1 изменённых файлов: 14 добавлений и 9 удалений

Просмотреть файл

@ -130,22 +130,27 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru
return 0;
}
static int receive_unpack_status(int in)
{
const char *line = packet_read_line(in, NULL);
if (!starts_with(line, "unpack "))
return error("did not receive remote status");
if (strcmp(line, "unpack ok"))
return error("unpack failed: %s", line + 7);
return 0;
}
static int receive_status(int in, struct ref *refs)
{
struct ref *hint;
int ret = 0;
char *line = packet_read_line(in, NULL);
if (!starts_with(line, "unpack "))
return error("did not receive remote status");
if (strcmp(line, "unpack ok")) {
error("unpack failed: %s", line + 7);
ret = -1;
}
int ret;
hint = NULL;
ret = receive_unpack_status(in);
while (1) {
char *refname;
char *msg;
line = packet_read_line(in, NULL);
char *line = packet_read_line(in, NULL);
if (!line)
break;
if (!starts_with(line, "ok ") && !starts_with(line, "ng ")) {