tests: test number comes first in 'not ok $count - $message'
[gitweb.git] / sha1-array.c
index 5b75a5a35d7bbf20c9f5794e27b4d6ed3d91954a..6f4a2246c9a912d06cf1a6995e07bf2008ec749d 100644 (file)
@@ -14,7 +14,7 @@ static int void_hashcmp(const void *a, const void *b)
        return hashcmp(a, b);
 }
 
-void sha1_array_sort(struct sha1_array *array)
+static void sha1_array_sort(struct sha1_array *array)
 {
        qsort(array->sha1, array->nr, sizeof(*array->sha1), void_hashcmp);
        array->sorted = 1;
@@ -41,3 +41,19 @@ void sha1_array_clear(struct sha1_array *array)
        array->alloc = 0;
        array->sorted = 0;
 }
+
+void sha1_array_for_each_unique(struct sha1_array *array,
+                               for_each_sha1_fn fn,
+                               void *data)
+{
+       int i;
+
+       if (!array->sorted)
+               sha1_array_sort(array);
+
+       for (i = 0; i < array->nr; i++) {
+               if (i > 0 && !hashcmp(array->sha1[i], array->sha1[i-1]))
+                       continue;
+               fn(array->sha1[i], data);
+       }
+}