X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhstore.c;h=47b7c025075ffff66a6cdf4e98ae6471c71cdaf5;hp=adaca774d191b82f486880013cfbc88c2e37533a;hb=6e4f8128fe078a3e54f5c92d27c31acc7b8f9fd8;hpb=9cf6132a6ea29968131a000bc2fb6860affac45e diff --git a/uip/mhstore.c b/uip/mhstore.c index adaca77..47b7c02 100644 --- a/uip/mhstore.c +++ b/uip/mhstore.c @@ -40,6 +40,7 @@ static struct swit switches[] = { { NULL, 0 } }; +char *version=VERSION; /* mhparse.c */ extern char *tmp; /* directory to place temp files */ @@ -468,7 +469,7 @@ store_switch(CT ct) static int store_generic(CT ct) { - char **ap, **vp, *cp; + char **ap, **vp, *cp, *filename; CI ci = &ct->c_ctinfo; /* @@ -477,6 +478,18 @@ store_generic(CT ct) ** (only the "message" subtype "rfc822" will use store_generic). */ if (autosw && ct->c_type != CT_MESSAGE) { + /* First check for "filename" in Content-Disposition header */ + filename = extract_name_value("filename", ct->c_dispo); + if (filename && strcmp(filename, ct->c_dispo)!=0) { + /* We found "filename" */ + cp = mhbasename(filename); + if (*cp && *cp!='.' && *cp!='|' && *cp!='!' && + !strchr(cp, '%')) { + /* filename looks good: use it */ + ct->c_storeproc = mh_xstrdup(cp); + goto finished; + } + } /* ** Check the attribute/value pairs, for the attribute "name". ** If found, take the basename, do a few sanity checks and @@ -496,6 +509,7 @@ store_generic(CT ct) } } +finished: return store_content(ct, NULL); }