+ o Make sure we check if the Subject: prefix might be present in the
+ de-quoted printable version of the Subject. If so, don't add it.
o Fix bug with queuefilename containing all kinds og chars when sending
standard mails
o Let mlmmj-send be capable of handling relayhost local users bounce probes
char *hostnamestr(void);
char *mydirname(const char *path);
char *mybasename(const char *path);
+char *cleanquotedp(char *qpstr);
#endif /* STRGEN_H */
const char **delhdrs, struct mailhdr *readhdrs,
struct strlist *allhdrs, const char *prefix)
{
- char *hdrline, *subject;
+ char *hdrline, *subject, *unqp;
allhdrs->count = 0;
allhdrs->strs = NULL;
/* Add Subject: prefix if wanted */
if(prefix) {
if(strncmp(hdrline, "Subject: ", 9) == 0) {
- if(strstr(hdrline + 9, prefix) == NULL) {
+ unqp = cleanquotedp(hdrline + 9);
+ if(strstr(hdrline + 9, prefix) == NULL &&
+ strstr(unqp, prefix) == NULL) {
subject = concatstr(4,
"Subject: ", prefix,
" ", hdrline + 9);
strlen(subject));
myfree(subject);
myfree(hdrline);
+ myfree(unqp);
continue;
}
+ myfree(unqp);
}
}
return ret;
}
+
+char *cleanquotedp(char *qpstr)
+{
+ char *retstr = mymalloc(strlen(qpstr));
+ char qc[3], *c = qpstr;
+ long qcval;
+ int i = 0;
+
+ /* XXX: We only use this function for checking whether the subject
+ * prefix is only present, so the recoding is neither guaranteed
+ * complete nor correct */
+
+ qc[2] = '\0';
+ while(*c != '\0') {
+ switch(*c) {
+ case '=':
+ qc[0] = *(++c);
+ qc[1] = *(++c);
+ c++;
+ qcval = strtol(qc, NULL, 16);
+ if(qcval)
+ retstr[i++] = (char)qcval;
+ break;
+ case '_':
+ retstr[i++] = ' ';
+ c++;
+ break;
+ default:
+ retstr[i++] = *(c++);
+ break;
+ }
+ }
+
+ retstr[i] = '\0';
+
+ return retstr;
+}