Start of "git-send-pack", the local part of sending off a pack
[gitweb.git] / mktag.c
diff --git a/mktag.c b/mktag.c
index aa4a6d863bfb9e091b900470de2d03fa431bbfe2..8cbbef67e624d1d15bc4f2d7e2f9509be937c36d 100644 (file)
--- a/mktag.c
+++ b/mktag.c
@@ -106,7 +106,18 @@ int main(int argc, char **argv)
                usage("cat <signaturefile> | git-mktag");
 
        // Read the signature
-       size = read(0, buffer, MAXSIZE);
+       size = 0;
+       for (;;) {
+               int ret = read(0, buffer + size, MAXSIZE - size);
+               if (!ret)
+                       break;
+               if (ret < 0) {
+                       if (errno == EAGAIN)
+                               continue;
+                       break;
+               }
+               size += ret;
+       }
 
        // Verify it for some basic sanity: it needs to start with "object <sha1>\ntype "
        if (verify_tag(buffer, size) < 0)