send-pack: extract parsing of "unpack" response
authorJeff King <peff@peff.net>
Tue, 7 Mar 2017 13:35:57 +0000 (08:35 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 7 Mar 2017 22:51:20 +0000 (14:51 -0800)
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>
send-pack.c
index 6195b43e9abacf346f52b6bbb758c9ca7b617d4e..12e229e4476f7efe268070e543a2ccd8de9ab7e8 100644 (file)
@@ -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 ")) {