X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fforwsbr.c;h=79dfd10b350f2ecd74a5d0393aca75ebf16f4a88;hb=d8c7d4f2c785d35cebd5ea64213a335561a57f7d;hp=a3bc42e0fc26b1a802f072cbef297b2d3c0a6f19;hpb=2d1f77125ffb16daf661a40710bb0fb48343d1f9;p=mmh diff --git a/uip/forwsbr.c b/uip/forwsbr.c old mode 100755 new mode 100644 index a3bc42e..79dfd10 --- a/uip/forwsbr.c +++ b/uip/forwsbr.c @@ -21,14 +21,35 @@ static char msgbuf[256]; #define COMPFREE(c) if (c->c_text) free(c->c_text) +/* + * A list of components we treat as addresses + */ + +static char *addrcomps[] = { + "from", + "sender", + "reply-to", + "to", + "cc", + "bcc", + "resent-from", + "resent-sender", + "resent-reply-to", + "resent-to", + "resent-cc", + "resent-bcc", + NULL +}; + int build_form (char *form, char *digest, int *dat, char *from, char *to, char *cc, char *fcc, char *subject, char *inputfile) { int in; - int i, fmtsize, ncomps, state, char_read = 0; + int fmtsize, state, char_read = 0; + unsigned i; register char *nfs; - char *line, tmpfil[BUFSIZ], name[NAMESZ]; + char *line, tmpfil[BUFSIZ], name[NAMESZ], **ap; FILE *tmp; register struct comp *cptr; struct format *fmt; @@ -46,7 +67,17 @@ build_form (char *form, char *digest, int *dat, char *from, char *to, fmtsize = strlen (nfs) + 256; /* Compile format string */ - ncomps = fmt_compile (nfs, &fmt); + (void) fmt_compile (nfs, &fmt); + + /* + * Mark any components tagged as address components + */ + + for (ap = addrcomps; *ap; ap++) { + FINDCOMP (cptr, *ap); + if (cptr) + cptr->c_type |= CT_ADDR; + } /* * Process our message and save all relevant components @@ -70,9 +101,7 @@ build_form (char *form, char *digest, int *dat, char *from, char *to, if (mh_strcasecmp(name, cptr->c_name) == 0) { char_read += msg_count; if (! cptr->c_text) { - i = strlen(cptr->c_text = strdup(msgbuf)) - 1; - if (cptr->c_text[i] == '\n') - cptr->c_text[i] = '\0'; + cptr->c_text = strdup(msgbuf); } else { i = strlen(cptr->c_text) - 1; if (cptr->c_text[i] == '\n') {