diff -r f8f63e944375 sys/src/cmd/upas/common/common.h --- a/sys/src/cmd/upas/common/common.h Fri Jul 17 16:53:20 2020 +0200 +++ b/sys/src/cmd/upas/common/common.h Sat Jul 18 23:30:20 2020 -0700 @@ -52,9 +52,6 @@ void mailfmtinstall(void); /* 'U' = 2047fmt */ #pragma varargck type "U" char* -/* totm.c */ -int fromtotm(char*, Tm*); - /* a pipe between parent and child*/ typedef struct{ Biobuf bb; diff -r f8f63e944375 sys/src/cmd/upas/common/folder.c --- a/sys/src/cmd/upas/common/folder.c Fri Jul 17 16:53:20 2020 +0200 +++ b/sys/src/cmd/upas/common/folder.c Sat Jul 18 23:30:20 2020 -0700 @@ -1,5 +1,7 @@ #include "common.h" +#define Ctimefmt "W MMM _D hh:mm:ss ZZZ YYYY" + enum{ Mbox = 1, Mdir, @@ -185,7 +187,7 @@ appendfolder(Biobuf *b, char *addr, int fd) { char *s; - int r; + int r, n; Biobuf bin; Folder *f; Tm tm; @@ -194,9 +196,10 @@ Bseek(f->out, 0, 2); Binit(&bin, fd, OREAD); s = Brdstr(&bin, '\n', 0); - if(!s || strncmp(s, "From ", 5)) + n = strlen(s); + if(!s || strncmp(s, "From ", 5) != 0) Bprint(f->out, "From %s %.28s\n", addr, ctime(f->t)); - else if(fromtotm(s, &tm) >= 0) + else if(n > 5 && tmparse(&tm, Ctimefmt, s + 5, nil, nil) != nil) f->t = tm2sec(&tm); if(s) Bwrite(f->out, s, strlen(s)); diff -r f8f63e944375 sys/src/cmd/upas/common/mkfile --- a/sys/src/cmd/upas/common/mkfile Fri Jul 17 16:53:20 2020 +0200 +++ b/sys/src/cmd/upas/common/mkfile Sat Jul 18 23:30:20 2020 -0700 @@ -10,7 +10,6 @@ fmt.$O\ libsys.$O\ process.$O\ - totm.$O\ HFILES=common.h\ sys.h\ diff -r f8f63e944375 sys/src/cmd/upas/common/totm.c --- a/sys/src/cmd/upas/common/totm.c Fri Jul 17 16:53:20 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -#include - -static char mtab[] = "JanFebMarAprMayJunJulAugSepOctNovDec"; - -int -ctimetotm(char *s, Tm *tm) -{ - char buf[32]; - - if(strlen(s) < 28) - return -1; - snprint(buf, sizeof buf, "%s", s); - memset(tm, 0, sizeof *tm); - buf[7] = 0; - tm->mon = (strstr(mtab, buf+4) - mtab)/3; - tm->mday = atoi(buf+8); - tm->hour = atoi(buf+11); - tm->min = atoi(buf+14); - tm->sec = atoi(buf+17); - tm->zone[0] = buf[20]; - tm->zone[1] = buf[21]; - tm->zone[2] = buf[22]; - tm->year = atoi(buf+24) - 1900; - return 0; -} - -int -fromtotm(char *s, Tm *tm) -{ - char buf[256], *f[3]; - - snprint(buf, sizeof buf, "%s", s); - if(getfields(buf, f, nelem(f), 0, " ") != 3) - return -1; - return ctimetotm(f[2], tm); -}