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>
This commit is contained in:
parent
100690b6e8
commit
e92a54d99c
13
date.c
13
date.c
@ -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)
|
||||
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…
Reference in New Issue
Block a user