Browse Source

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>
maint
Shawn Pearce 19 years ago committed by Junio C Hamano
parent
commit
70e34b2dc8
  1. 2
      refs.c
  2. 1
      sha1_name.c

2
refs.c

@ -459,7 +459,7 @@ int read_ref_at(const char *ref, unsigned long at_time, unsigned char *sha1) @@ -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);

1
sha1_name.c

@ -267,6 +267,7 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) @@ -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;
}
}


Loading…
Cancel
Save