upas: fix appendfolder timestamps (thanks umbraticus)
When moving messages between folders, mbappend, deliver, and nedmail were trying to parse the timestamp ouut of the message. They were doing it incorrectly, trying to include the user name as part of the date format. Change to pass just the date to the date parser.
This commit is contained in:
parent
d310da13ba
commit
a41b74059b
1 changed files with 19 additions and 7 deletions
|
@ -184,8 +184,8 @@ mboxesc(Biobuf *in, Biobuf *out, int type)
|
|||
int
|
||||
appendfolder(Biobuf *b, char *addr, int fd)
|
||||
{
|
||||
char *s;
|
||||
int r, n;
|
||||
char *s, *t;
|
||||
int r;
|
||||
Biobuf bin;
|
||||
Folder *f;
|
||||
Tzone *tz;
|
||||
|
@ -194,15 +194,27 @@ appendfolder(Biobuf *b, char *addr, int fd)
|
|||
f = getfolder(b);
|
||||
Bseek(f->out, 0, 2);
|
||||
Binit(&bin, fd, OREAD);
|
||||
|
||||
s = Brdstr(&bin, '\n', 0);
|
||||
n = strlen(s);
|
||||
if(!s || strncmp(s, "From ", 5) != 0){
|
||||
|
||||
/* Unix from */
|
||||
if(s != nil && strncmp(s, "From ", 5) == 0
|
||||
&& (t = strchr(s + 5, ' ')) != nil
|
||||
&& tmparse(&tm, Timefmt, t + 1, nil, nil) != nil){
|
||||
f->t = tmnorm(&tm);
|
||||
}else {
|
||||
/*
|
||||
* Old mailboxes have dates in ctime format,
|
||||
* which contains ambiguous timezone names.
|
||||
* Passing in the local timezone has the side
|
||||
* effect of disambiguating the timezone name
|
||||
* as local.
|
||||
*/
|
||||
tz = tzload("local");
|
||||
tmtime(&tm, f->t, tz);
|
||||
Bprint(f->out, "From %s %τ\n", addr, tmfmt(&tm, Timefmt));
|
||||
}else if(n > 5 && tmparse(&tm, Timefmt, s + 5, nil, nil) != nil)
|
||||
f->t = tmnorm(&tm);
|
||||
if(s)
|
||||
}
|
||||
if(s != nil)
|
||||
Bwrite(f->out, s, strlen(s));
|
||||
free(s);
|
||||
r = mboxesc(&bin, f->out, f->type);
|
||||
|
|
Loading…
Reference in a new issue