libc: tmparse should ignore leading whitespace
We almost always want to skip leading whitespace in time formats, so make tmparse just do it. This fixes upas mbox parsing, which leaves a leading whitespace at the start of the date.
This commit is contained in:
parent
8727bfd9bd
commit
17abfa51ca
2 changed files with 16 additions and 1 deletions
|
@ -65,6 +65,7 @@ Tmstime is identical to tmtime, but accepts the time in sec-
|
|||
onds.
|
||||
.PP
|
||||
Tmparse parses a time from a string according to the format argument.
|
||||
Leading whitespace is ignored.
|
||||
The point at which the parsing stopped is returned in
|
||||
.IR ep .
|
||||
If
|
||||
|
|
|
@ -632,6 +632,20 @@ tmparse(Tm *tm, char *fmt, char *str, Tzone *tz, char **ep)
|
|||
sloppy = 1;
|
||||
p++;
|
||||
}
|
||||
|
||||
/* Skip whitespace */
|
||||
for(;; p++) {
|
||||
switch(*p) {
|
||||
case ' ':
|
||||
case '\t':
|
||||
case '\n':
|
||||
case '\f':
|
||||
case '\r':
|
||||
case '\v':
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
while(*p){
|
||||
w = 1;
|
||||
c0 = *p++;
|
||||
|
@ -868,7 +882,6 @@ Zoneparsed:
|
|||
case '_':
|
||||
case ',':
|
||||
case ' ':
|
||||
|
||||
if(*s != ' ' && *s != '\t' && *s != ',' && *s != '\n' && *s != '\0')
|
||||
goto baddate;
|
||||
p += strspn(p, " ,_\t\n");
|
||||
|
@ -884,6 +897,7 @@ Zoneparsed:
|
|||
if(!ok)
|
||||
goto baddate;
|
||||
}
|
||||
|
||||
if(*p != '\0')
|
||||
goto baddate;
|
||||
if(ep != nil)
|
||||
|
|
Loading…
Reference in a new issue