*/
#define PACK_IDX_SIGNATURE 0xff744f63 /* "\377tOc" */
-/* These may be overridden by command-line parameters */
-extern uint32_t pack_idx_default_version;
-extern uint32_t pack_idx_off32_limit;
+struct pack_idx_option {
+ unsigned flags;
+ /* flag bits */
+#define WRITE_IDX_VERIFY 01
+
+ uint32_t version;
+ uint32_t off32_limit;
+
+ /*
+ * List of offsets that would fit within off32_limit but
+ * need to be written out as 64-bit entity for byte-for-byte
+ * verification.
+ */
+ int anomaly_alloc, anomaly_nr;
+ uint32_t *anomaly;
+};
+
+extern void reset_pack_idx_option(struct pack_idx_option *);
/*
* Packed object index header
off_t offset;
};
-extern char *write_idx_file(char *index_name, struct pack_idx_entry **objects, int nr_objects, unsigned char *sha1);
+extern const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, unsigned char *sha1);
extern int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr);
+extern int verify_pack_index(struct packed_git *);
extern int verify_pack(struct packed_git *);
-extern void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t);
+extern void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t);
extern char *index_pack_lockfile(int fd);
+extern int encode_in_pack_object_header(enum object_type, uintmax_t, unsigned char *);
#define PH_ERROR_EOF (-1)
#define PH_ERROR_PACK_SIGNATURE (-2)