Fix ref log parsing so it works properly.

The log parser was only ever matching the last log record due to
calling strtoul on "> 1136091609" rather than " 1136091609".  Also
once a match for '@' has been found after the name of the ref there
is no point in looking for another '@' within the remaining text.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Shawn Pearce 2006-05-17 18:34:48 -04:00 committed by Junio C Hamano
parent d556fae2c0
commit 70e34b2dc8
2 changed files with 2 additions and 1 deletions

2
refs.c
View File

@ -459,7 +459,7 @@ int read_ref_at(const char *ref, unsigned long at_time, unsigned char *sha1)
c++;
if (c == logend || *c == '\n')
die("Log %s is corrupt.", logfile);
date = strtoul(c, NULL, 10);
date = strtoul(c + 1, NULL, 10);
if (date <= at_time) {
if (get_sha1_hex(rec + 41, sha1))
die("Log %s is corrupt.", logfile);

View File

@ -267,6 +267,7 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
at_time = approxidate(date_spec);
free(date_spec);
len = at_mark;
break;
}
}