Browse Source

Clean up approxidate() in preparation for fixes

Our approxidate cannot handle simple times like "5 PM yesterday", and to
fix that, we will need to add some logic for number handling.  This just
splits that out into a function of its own (the same way the _real_ date
parsing works).

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Linus Torvalds 19 years ago committed by Junio C Hamano
parent
commit
e92a54d99c
  1. 13
      date.c

13
date.c

@ -712,6 +712,15 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, int *num) @@ -712,6 +712,15 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, int *num)
return end;
}

static const char *approxidate_digit(const char *date, struct tm *tm, int *num)
{
char *end;
unsigned long number = strtoul(date, &end, 10);

*num = number;
return end;
}

unsigned long approxidate(const char *date)
{
int number = 0;
@ -731,9 +740,7 @@ unsigned long approxidate(const char *date) @@ -731,9 +740,7 @@ unsigned long approxidate(const char *date)
break;
date++;
if (isdigit(c)) {
char *end;
number = strtoul(date-1, &end, 10);
date = end;
date = approxidate_digit(date-1, &tm, &number);
continue;
}
if (isalpha(c))

Loading…
Cancel
Save