imap4d: get rid of unixdate/unixfrom handling
all this logic is already done by upas/fs, the unixdate and from fields in the info file will always be correct.
This commit is contained in:
parent
24dcdb54b8
commit
b33eb658e2
3 changed files with 3 additions and 91 deletions
|
@ -112,7 +112,7 @@ fetchmsg(Box *, Msg *m, int uids, void *vf)
|
||||||
fetchenvelope(m);
|
fetchenvelope(m);
|
||||||
break;
|
break;
|
||||||
case Finternaldate:
|
case Finternaldate:
|
||||||
Bprint(&bout, "%sINTERNALDATE %#D", sep, date2tm(&tm, m->unixdate));
|
Bprint(&bout, "%sINTERNALDATE %#D", sep, date2tm(&tm, m->info[Iunixdate]));
|
||||||
break;
|
break;
|
||||||
case Fbody:
|
case Fbody:
|
||||||
Bprint(&bout, "%sBODY ", sep);
|
Bprint(&bout, "%sBODY ", sep);
|
||||||
|
|
|
@ -146,9 +146,6 @@ struct Msg
|
||||||
char *ibuf;
|
char *ibuf;
|
||||||
char *info[Imax]; /* all info about message */
|
char *info[Imax]; /* all info about message */
|
||||||
|
|
||||||
char *unixdate;
|
|
||||||
Maddr *unixfrom;
|
|
||||||
|
|
||||||
Maddr *to; /* parsed out address lines */
|
Maddr *to; /* parsed out address lines */
|
||||||
Maddr *from;
|
Maddr *from;
|
||||||
Maddr *replyto;
|
Maddr *replyto;
|
||||||
|
|
|
@ -136,12 +136,9 @@ freemsg(Box *box, Msg *m)
|
||||||
freemaddr(m->replyto);
|
freemaddr(m->replyto);
|
||||||
if(m->sender != m->from)
|
if(m->sender != m->from)
|
||||||
freemaddr(m->sender);
|
freemaddr(m->sender);
|
||||||
if(m->from != m->unixfrom)
|
freemaddr(m->from);
|
||||||
freemaddr(m->from);
|
|
||||||
freemaddr(m->unixfrom);
|
|
||||||
freemaddr(m->cc);
|
freemaddr(m->cc);
|
||||||
freemaddr(m->bcc);
|
freemaddr(m->bcc);
|
||||||
free(m->unixdate);
|
|
||||||
freeheader(&m->head);
|
freeheader(&m->head);
|
||||||
freeheader(&m->mime);
|
freeheader(&m->mime);
|
||||||
for(k = m->kids; k != nil; ){
|
for(k = m->kids; k != nil; ){
|
||||||
|
@ -262,76 +259,6 @@ msgreadfile(Msg *m, char *file, char **ss)
|
||||||
return nn;
|
return nn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* parse the address in the unix header
|
|
||||||
* last line of defence, so must return something
|
|
||||||
*/
|
|
||||||
static Maddr *
|
|
||||||
unixfrom(char *s)
|
|
||||||
{
|
|
||||||
char *e, *t;
|
|
||||||
Maddr *a;
|
|
||||||
|
|
||||||
if(s == nil)
|
|
||||||
return nil;
|
|
||||||
headstr = (uchar*)s;
|
|
||||||
t = emalloc(strlen(s) + 2);
|
|
||||||
e = headaddrspec(t, nil);
|
|
||||||
if(e == nil)
|
|
||||||
a = nil;
|
|
||||||
else{
|
|
||||||
if(*e != '\0')
|
|
||||||
*e++ = '\0';
|
|
||||||
else
|
|
||||||
e = site;
|
|
||||||
a = MKZ(Maddr);
|
|
||||||
a->box = estrdup(t);
|
|
||||||
a->host = estrdup(e);
|
|
||||||
}
|
|
||||||
free(t);
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* retrieve information from the unixheader file
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
msgunix(Msg *m, int top)
|
|
||||||
{
|
|
||||||
char *s, *ss;
|
|
||||||
Tm tm;
|
|
||||||
|
|
||||||
if(m->unixdate != nil)
|
|
||||||
return 1;
|
|
||||||
if(!top){
|
|
||||||
bogus:
|
|
||||||
m->unixdate = estrdup("");
|
|
||||||
m->unixfrom = unixfrom(nil);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(msgreadfile(m, "unixheader", &ss) < 0)
|
|
||||||
goto bogus;
|
|
||||||
s = ss;
|
|
||||||
s = strchr(s, ' ');
|
|
||||||
if(s == nil){
|
|
||||||
free(ss);
|
|
||||||
goto bogus;
|
|
||||||
}
|
|
||||||
s++;
|
|
||||||
m->unixfrom = unixfrom(s);
|
|
||||||
s = (char*)headstr;
|
|
||||||
if(date2tm(&tm, s) == nil)
|
|
||||||
s = m->info[Iunixdate];
|
|
||||||
if(s == nil){
|
|
||||||
free(ss);
|
|
||||||
goto bogus;
|
|
||||||
}
|
|
||||||
m->unixdate = estrdup(s);
|
|
||||||
free(ss);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* make sure the message has valid associated info
|
* make sure the message has valid associated info
|
||||||
* used for Isubject, Idigest, Iinreplyto, Imessageid.
|
* used for Isubject, Idigest, Iinreplyto, Imessageid.
|
||||||
|
@ -391,8 +318,7 @@ msgstruct(Msg *m, int top)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!msgunix(m, top)
|
if(!msgbodysize(m)
|
||||||
|| !msgbodysize(m)
|
|
||||||
|| (top || msgis822(&m->mime) || msgismulti(&m->mime)) && !msgheader(m, &m->head, "rawheader")){
|
|| (top || msgis822(&m->mime) || msgismulti(&m->mime)) && !msgheader(m, &m->head, "rawheader")){
|
||||||
msgdead(m);
|
msgdead(m);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -668,21 +594,10 @@ msgheader(Msg *m, Header *h, char *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(h == &m->head){
|
if(h == &m->head){
|
||||||
if(m->from == nil){
|
|
||||||
m->from = m->unixfrom;
|
|
||||||
if(m->from != nil){
|
|
||||||
s = maddrstr(m->from);
|
|
||||||
msgaddhead(m, "From", s);
|
|
||||||
free(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(m->sender == nil)
|
if(m->sender == nil)
|
||||||
m->sender = m->from;
|
m->sender = m->from;
|
||||||
if(m->replyto == nil)
|
if(m->replyto == nil)
|
||||||
m->replyto = m->from;
|
m->replyto = m->from;
|
||||||
|
|
||||||
if(m->info[Idate] == 0)
|
|
||||||
m->info[Idate] = m->unixdate;
|
|
||||||
if(!dated && m->from != nil)
|
if(!dated && m->from != nil)
|
||||||
msgadddate(m);
|
msgadddate(m);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue