summaryrefslogtreecommitdiff
path: root/sys/src/libc
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2020-08-26 10:23:00 -0700
committerOri Bernstein <ori@eigenstate.org>2020-08-26 10:23:00 -0700
commit17abfa51ca4a34d6320d8d605ad4002990fd2f10 (patch)
tree0ce9a9a7f73678007f6f9a60c718f8f57f96afe7 /sys/src/libc
parent8727bfd9bdc57ffecc1c3fd06031e75abd987579 (diff)
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.
Diffstat (limited to 'sys/src/libc')
-rw-r--r--sys/src/libc/port/date.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/sys/src/libc/port/date.c b/sys/src/libc/port/date.c
index 0e9669eeb..7ca93856b 100644
--- a/sys/src/libc/port/date.c
+++ b/sys/src/libc/port/date.c
@@ -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)