From: Jeff King Date: Tue, 7 Mar 2017 13:35:57 +0000 (-0500) Subject: send-pack: extract parsing of "unpack" response X-Git-Tag: v2.12.2~8^2~4 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/7c39df2979733e0041db7aff09c3f3a53b980ef2 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 Signed-off-by: Junio C Hamano --- diff --git a/send-pack.c b/send-pack.c index 6195b43e9a..12e229e447 100644 --- a/send-pack.c +++ b/send-pack.c @@ -130,22 +130,27 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru return 0; } -static int receive_status(int in, struct ref *refs) +static int receive_unpack_status(int in) { - struct ref *hint; - int ret = 0; - char *line = packet_read_line(in, NULL); + 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")) { - error("unpack failed: %s", line + 7); - ret = -1; - } + 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; + 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 ")) {