X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhstoresbr.c;h=41aa1a4c15a3823925395e3043357f455fa1e7f9;hp=2d0fdc81d4a32c3f907242ecd254f78fb9efc49f;hb=2da3024caea2be71550f9eabd2fbc08fefe29bb5;hpb=4a78892df0b95cc22a976632445f3dca8893aae4 diff --git a/uip/mhstoresbr.c b/uip/mhstoresbr.c index 2d0fdc8..41aa1a4 100644 --- a/uip/mhstoresbr.c +++ b/uip/mhstoresbr.c @@ -218,7 +218,7 @@ store_application (CT ct) * attribute/value pairs which specify if this a tar file. */ if (!ct->c_storeproc && ct->c_subtype == APPLICATION_OCTETS) { - int tarP = 0, zP = 0; + int tarP = 0, zP = 0, gzP = 0; for (ap = ci->ci_attrs, ep = ci->ci_values; *ap; ap++, ep++) { /* check for "type=tar" attribute */ @@ -236,18 +236,28 @@ store_application (CT ct) zP = 1; continue; } + /* check for "conversions=gzip" attribute */ + if ((!strcasecmp (*ap, "conversions") || !strcasecmp (*ap, "x-conversions")) + && (!strcasecmp (*ep, "gzip") || !strcasecmp (*ep, "x-gzip"))) { + gzP = 1; + continue; + } } if (tarP) { ct->c_showproc = add (zP ? "%euncompress | tar tvf -" - : "%etar tvf -", NULL); + : (gzP ? "%egzip -dc | tar tvf -" + : "%etar tvf -"), NULL); if (!ct->c_storeproc) { if (autosw) { ct->c_storeproc = add (zP ? "| uncompress | tar xvpf -" - : "| tar xvpf -", NULL); + : (gzP ? "| gzip -dc | tar xvpf -" + : "| tar xvpf -"), NULL); ct->c_umask = 0022; } else { - ct->c_storeproc= add (zP ? "%m%P.tar.Z" : "%m%P.tar", NULL); + ct->c_storeproc= add (zP ? "%m%P.tar.Z" + : (gzP ? "%m%P.tar.gz" + : "%m%P.tar"), NULL); } } }