for_each_hash: allow passing a 'void *data' pointer to callback
[gitweb.git] / delta.h
diff --git a/delta.h b/delta.h
index 7b3f86d85f71e47d11c40a4abbcd9d9f499a6636..b9d333dd5a1c64ab35159ed608cf942951504f84 100644 (file)
--- a/delta.h
+++ b/delta.h
@@ -23,6 +23,13 @@ create_delta_index(const void *buf, unsigned long bufsize);
  */
 extern void free_delta_index(struct delta_index *index);
 
+/*
+ * sizeof_delta_index: returns memory usage of delta index
+ *
+ * Given pointer must be what create_delta_index() returned, or NULL.
+ */
+extern unsigned long sizeof_delta_index(struct delta_index *index);
+
 /*
  * create_delta: create a delta from given index for the given buffer
  *
@@ -83,12 +90,11 @@ static inline unsigned long get_delta_hdr_size(const unsigned char **datap,
                                               const unsigned char *top)
 {
        const unsigned char *data = *datap;
-       unsigned char cmd;
-       unsigned long size = 0;
+       unsigned long cmd, size = 0;
        int i = 0;
        do {
                cmd = *data++;
-               size |= (cmd & ~0x80) << i;
+               size |= (cmd & 0x7f) << i;
                i += 7;
        } while (cmd & 0x80 && data < top);
        *datap = data;