archive: initialize archivers earlier
[gitweb.git] / midx.c
diff --git a/midx.c b/midx.c
index ef4a6969df984fa95e7e9657a98577a6f484aeb8..ea2f3ffe2e21700038eabf00aa975e5cc111a47f 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -7,6 +7,7 @@
 #include "object-store.h"
 #include "sha1-lookup.h"
 #include "midx.h"
+#include "progress.h"
 
 #define MIDX_SIGNATURE 0x4d494458 /* "MIDX" */
 #define MIDX_VERSION 1
@@ -281,8 +282,8 @@ static int nth_midxed_pack_entry(struct multi_pack_index *m, struct pack_entry *
                struct object_id oid;
                nth_midxed_object_oid(&oid, m, pos);
                for (i = 0; i < p->num_bad_objects; i++)
-                       if (!hashcmp(oid.hash,
-                                    p->bad_object_sha1 + the_hash_algo->rawsz * i))
+                       if (hasheq(oid.hash,
+                                  p->bad_object_sha1 + the_hash_algo->rawsz * i))
                                return 0;
        }
 
@@ -579,8 +580,8 @@ static struct pack_midx_entry *get_sorted_entries(struct multi_pack_index *m,
                 * Take only the first duplicate.
                 */
                for (cur_object = 0; cur_object < nr_fanout; cur_object++) {
-                       if (cur_object && !oidcmp(&entries_by_fanout[cur_object - 1].oid,
-                                                 &entries_by_fanout[cur_object].oid))
+                       if (cur_object && oideq(&entries_by_fanout[cur_object - 1].oid,
+                                               &entries_by_fanout[cur_object].oid))
                                continue;
 
                        ALLOC_GROW(deduplicated_entries, *nr_objects + 1, alloc_objects);
@@ -940,6 +941,7 @@ static void midx_report(const char *fmt, ...)
 int verify_midx_file(const char *object_dir)
 {
        uint32_t i;
+       struct progress *progress = NULL;
        struct multi_pack_index *m = load_multi_pack_index(object_dir, 1);
        verify_midx_error = 0;
 
@@ -971,6 +973,7 @@ int verify_midx_file(const char *object_dir)
                                    i, oid_to_hex(&oid1), oid_to_hex(&oid2), i + 1);
        }
 
+       progress = start_progress(_("Verifying object offsets"), m->num_objects);
        for (i = 0; i < m->num_objects; i++) {
                struct object_id oid;
                struct pack_entry e;
@@ -995,7 +998,10 @@ int verify_midx_file(const char *object_dir)
                if (m_offset != p_offset)
                        midx_report(_("incorrect object offset for oid[%d] = %s: %"PRIx64" != %"PRIx64),
                                    i, oid_to_hex(&oid), m_offset, p_offset);
+
+               display_progress(progress, i + 1);
        }
+       stop_progress(&progress);
 
        return verify_midx_error;
 }