summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 19:07:00 (GMT)
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 19:07:00 (GMT)
commit01796b0e9180f92ed23aa8dc2261857b9dec7d13 (patch)
treea993c92293f2ea7afbac1e637167830d7f003d7d
parent89d21f4b649d5d31b18da3220608cb349f29e650 (diff)
downloadgit-01796b0e9180f92ed23aa8dc2261857b9dec7d13.zip
git-01796b0e9180f92ed23aa8dc2261857b9dec7d13.tar.gz
git-01796b0e9180f92ed23aa8dc2261857b9dec7d13.tar.bz2
Make "revision.h" slightly better to use.
- mark_reachable() can be more generic, marking the reachable revisions with an arbitrary mask. - date parsing will parse to a date of 0 rather than ULONG_MAX for the bad old case, sorting the dates correctly.
-rw-r--r--fsck-cache.c2
-rw-r--r--revision.h16
2 files changed, 11 insertions, 7 deletions
diff --git a/fsck-cache.c b/fsck-cache.c
index 3fbcd2c..a8050f8 100644
--- a/fsck-cache.c
+++ b/fsck-cache.c
@@ -186,7 +186,7 @@ int main(int argc, char **argv)
continue;
}
if (!get_sha1_hex(argv[i], head_sha1)) {
- mark_reachable(lookup_rev(head_sha1));
+ mark_reachable(lookup_rev(head_sha1), REACHABLE);
heads++;
continue;
}
diff --git a/revision.h b/revision.h
index 2bad6c0..f965f3f 100644
--- a/revision.h
+++ b/revision.h
@@ -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)