t4006: Windows do not have /dev/zero
[gitweb.git] / commit.c
index b80a45281ccf4234b685954651db4249201e60db..9ed36c7db5ee0d2e820a01b27507c4ab0afe9663 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -361,21 +361,6 @@ struct commit_list *commit_list_insert(struct commit *item, struct commit_list *
        return new_list;
 }
 
-void commit_list_reverse(struct commit_list **list_p)
-{
-       struct commit_list *prev = NULL, *curr = *list_p, *next;
-
-       if (!list_p)
-               return;
-       while (curr) {
-               next = curr->next;
-               curr->next = prev;
-               prev = curr;
-               curr = next;
-       }
-       *list_p = prev;
-}
-
 unsigned commit_list_count(const struct commit_list *l)
 {
        unsigned c = 0;
@@ -1214,3 +1199,30 @@ struct commit *get_merge_parent(const char *name)
        }
        return commit;
 }
+
+/*
+ * Append a commit to the end of the commit_list.
+ *
+ * next starts by pointing to the variable that holds the head of an
+ * empty commit_list, and is updated to point to the "next" field of
+ * the last item on the list as new commits are appended.
+ *
+ * Usage example:
+ *
+ *     struct commit_list *list;
+ *     struct commit_list **next = &list;
+ *
+ *     next = commit_list_append(c1, next);
+ *     next = commit_list_append(c2, next);
+ *     assert(commit_list_count(list) == 2);
+ *     return list;
+ */
+struct commit_list **commit_list_append(struct commit *commit,
+                                       struct commit_list **next)
+{
+       struct commit_list *new = xmalloc(sizeof(struct commit_list));
+       new->item = commit;
+       *next = new;
+       new->next = NULL;
+       return &new->next;
+}