[PATCH] Switch implementations of merge-base, port to parsing
[gitweb.git] / revision.h
index 2bad6c01a447a67c2013b0a092ca7afe04b7511e..f965f3fc5f66827759223dc9caf63d9abf40ae15 100644 (file)
@@ -97,22 +97,24 @@ static struct revision *add_relationship(struct revision *rev, unsigned char *ne
        return parent_rev;
 }
 
-static void mark_reachable(struct revision *rev)
+static void mark_reachable(struct revision *rev, unsigned int mask)
 {
        struct parent *p = rev->parent;
 
        /* If we've been here already, don't bother */
-       if (rev->flags & REACHABLE)
+       if (rev->flags & mask)
                return;
-       rev->flags |= REACHABLE | USED;
+       rev->flags |= mask | USED;
        while (p) {
-               mark_reachable(p->parent);
+               mark_reachable(p->parent, mask);
                p = p->next;
        }
 }
 
 static unsigned long parse_commit_date(const char *buf)
 {
+       unsigned long date;
+
        if (memcmp(buf, "author", 6))
                return 0;
        while (*buf++ != '\n')
@@ -121,8 +123,10 @@ static unsigned long parse_commit_date(const char *buf)
                return 0;
        while (*buf++ != '>')
                /* nada */;
-
-       return strtoul(buf, NULL, 10);
+       date = strtoul(buf, NULL, 10);
+       if (date == ULONG_MAX)
+               date = 0;
+       return date;
 }
 
 static int parse_commit(unsigned char *sha1)