+#define SEEN (1u << 0)
+#define INTERESTING (1u << 1)
+#define UNINTERESTING (1u << 2)
+
+static const char rev_list_usage[] =
+ "usage: git-rev-list [OPTION] commit-id <commit-id>\n"
+ " --max-count=nr\n"
+ " --max-age=epoch\n"
+ " --min-age=epoch\n"
+ " --header";
+
+static void mark_parents_uninteresting(struct commit *commit)
+{
+ struct commit_list *parents = commit->parents;
+
+ while (parents) {
+ struct commit *commit = parents->item;
+ commit->object.flags |= UNINTERESTING;
+ parents = parents->next;
+ }
+}
+
+static int everybody_uninteresting(struct commit_list *list)
+{
+ while (list) {
+ struct commit *commit = list->item;
+ list = list->next;
+ if (commit->object.flags & UNINTERESTING)
+ continue;
+ return 0;
+ }
+ return 1;
+}
+