bisect: make skipped array functions more generic
authorChristian Couder <chriscool@tuxfamily.org>
Sat, 9 May 2009 15:55:43 +0000 (17:55 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 10 May 2009 21:30:29 +0000 (14:30 -0700)
So they can be used on the good array too.

This is done by renaming many functions and some variables to
remove "skip" in the name, and by adding a
"struct sha1_array *array" argument where needed.

While at it, make the second argument to "lookup_sha1_array"
const. It becomes "const unsigned char *sha1".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
bisect.c

index 9e01b9e0ef6e5d599b44201b750745b5d77b24c9..77edecaaec373c7395ddec8bf87088e660255659 100644 (file)
--- a/bisect.c
+++ b/bisect.c
@@ -479,27 +479,26 @@ void read_bisect_paths(struct argv_array *array)
        fclose(fp);
 }
 
-static int skipcmp(const void *a, const void *b)
+static int array_cmp(const void *a, const void *b)
 {
        return hashcmp(a, b);
 }
 
-static void prepare_skipped(void)
+static void sort_sha1_array(struct sha1_array *array)
 {
-       qsort(skipped_revs.sha1, skipped_revs.sha1_nr,
-             sizeof(*skipped_revs.sha1), skipcmp);
+       qsort(array->sha1, array->sha1_nr, sizeof(*array->sha1), array_cmp);
 }
 
-static const unsigned char *skipped_sha1_access(size_t index, void *table)
+static const unsigned char *sha1_access(size_t index, void *table)
 {
-       unsigned char (*skipped)[20] = table;
-       return skipped[index];
+       unsigned char (*array)[20] = table;
+       return array[index];
 }
 
-static int lookup_skipped(unsigned char *sha1)
+static int lookup_sha1_array(struct sha1_array *array,
+                            const unsigned char *sha1)
 {
-       return sha1_pos(sha1, skipped_revs.sha1, skipped_revs.sha1_nr,
-                       skipped_sha1_access);
+       return sha1_pos(sha1, array->sha1, array->sha1_nr, sha1_access);
 }
 
 struct commit_list *filter_skipped(struct commit_list *list,
@@ -513,12 +512,13 @@ struct commit_list *filter_skipped(struct commit_list *list,
        if (!skipped_revs.sha1_nr)
                return list;
 
-       prepare_skipped();
+       sort_sha1_array(&skipped_revs);
 
        while (list) {
                struct commit_list *next = list->next;
                list->next = NULL;
-               if (0 <= lookup_skipped(list->item->object.sha1)) {
+               if (0 <= lookup_sha1_array(&skipped_revs,
+                                          list->item->object.sha1)) {
                        /* Move current to tried list */
                        *tried = list;
                        tried = &list->next;