]> git.ipfire.org Git - thirdparty/git.git/blobdiff - midx.c
multi-pack-index: verify missing pack
[thirdparty/git.git] / midx.c
diff --git a/midx.c b/midx.c
index 939e8fa391ca9bea8264643fc8c02fca5723e26d..01f4d694d2865e3a38dc92290c224d18ffeb4c3c 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -926,13 +926,29 @@ void clear_midx_file(const char *object_dir)
 
 static int verify_midx_error;
 
+static void midx_report(const char *fmt, ...)
+{
+       va_list ap;
+       verify_midx_error = 1;
+       va_start(ap, fmt);
+       vfprintf(stderr, fmt, ap);
+       fprintf(stderr, "\n");
+       va_end(ap);
+}
+
 int verify_midx_file(const char *object_dir)
 {
+       uint32_t i;
        struct multi_pack_index *m = load_multi_pack_index(object_dir, 1);
        verify_midx_error = 0;
 
        if (!m)
                return 0;
 
+       for (i = 0; i < m->num_packs; i++) {
+               if (prepare_midx_pack(m, i))
+                       midx_report("failed to load pack in position %d", i);
+       }
+
        return verify_midx_error;
 }