mshow: use blaze822_mime2231_parameter for filenames

pull/28/head
Leah Neukirchen 7 years ago
parent c6480f4785
commit 93bfc9cf5f

@ -24,7 +24,7 @@ maddr magrep mexport mflag mgenmid mhdr mlist mpick mscan msed mseq mshow msort
mthread : seq.o slurp.o mthread : seq.o slurp.o
maddr magrep mhdr mpick mscan mshow : rfc2047.o maddr magrep mhdr mpick mscan mshow : rfc2047.o
magrep mshow : rfc2045.o magrep mshow : rfc2045.o
mshow : filter.o safe_u8putstr.c mshow : filter.o safe_u8putstr.c rfc2231.c
msort : mystrverscmp.o msort : mystrverscmp.o
mmime : slurp.o mmime : slurp.o

@ -146,14 +146,18 @@ tlmimetype(char *ct)
char * char *
mime_filename(struct message *msg) mime_filename(struct message *msg)
{ {
char *filename = 0, *fn, *fne, *v; static char buf[512];
char *v;
char *filename = 0;
if ((v = blaze822_hdr(msg, "content-disposition"))) { if ((v = blaze822_hdr(msg, "content-disposition"))) {
if (blaze822_mime_parameter(v, "filename", &fn, &fne)) if (blaze822_mime2231_parameter(v, "filename",
filename = strndup(fn, fne-fn); buf, sizeof buf, "UTF-8"))
filename = buf;
} else if ((v = blaze822_hdr(msg, "content-type"))) { } else if ((v = blaze822_hdr(msg, "content-type"))) {
if (blaze822_mime_parameter(v, "name", &fn, &fne)) if (blaze822_mime2231_parameter(v, "name",
filename = strndup(fn, fne-fn); buf, sizeof buf, "UTF-8"))
filename = buf;
} }
return filename; return filename;
@ -177,10 +181,8 @@ render_mime(int depth, struct message *msg, char *body, size_t bodylen)
for (i = 0; i < depth+1; i++) for (i = 0; i < depth+1; i++)
printf("--- "); printf("--- ");
printf("%d: %s size=%zd", mimecount, mt, bodylen); printf("%d: %s size=%zd", mimecount, mt, bodylen);
if (filename) { if (filename)
printf(" name=\"%s\"", filename); printf(" name=\"%s\"", filename);
free(filename);
}
char *cmd; char *cmd;
blaze822_mime_action r = MIME_CONTINUE; blaze822_mime_action r = MIME_CONTINUE;
@ -354,10 +356,8 @@ list_mime(int depth, struct message *msg, char *body, size_t bodylen)
char *filename = mime_filename(msg); char *filename = mime_filename(msg);
printf(" %*.s%d: %s size=%zd", depth*2, "", ++mimecount, mt, bodylen); printf(" %*.s%d: %s size=%zd", depth*2, "", ++mimecount, mt, bodylen);
if (filename) { if (filename)
printf(" name=\"%s\"", filename); printf(" name=\"%s\"", filename);
free(filename);
}
printf("\n"); printf("\n");
return MIME_CONTINUE; return MIME_CONTINUE;
@ -496,7 +496,6 @@ extract_mime(int depth, struct message *msg, char *body, size_t bodylen)
} }
} }
free(filename);
return MIME_CONTINUE; return MIME_CONTINUE;
} }

Loading…
Cancel
Save