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;
}
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;
+}