X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhbuild.c;h=e6caba39888aafa55def634e1e8dc35e71a59eef;hp=5f29d0e617a2aee5ceb5985eb414ce60503df6fe;hb=31dc797eb5178970d68962ca8939da3fd9a8efda;hpb=85efd688c798fc782567d3f9c283064a01d5c9fe diff --git a/uip/mhbuild.c b/uip/mhbuild.c index 5f29d0e..e6caba3 100644 --- a/uip/mhbuild.c +++ b/uip/mhbuild.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include @@ -31,47 +30,43 @@ #include static struct swit switches[] = { -#define CHECKSW 0 - { "check", 0 }, -#define NCHECKSW 1 - { "nocheck", 0 }, -#define EBCDICSW 2 +#define EBCDICSW 0 { "ebcdicsafe", 0 }, -#define NEBCDICSW 3 +#define NEBCDICSW 1 { "noebcdicsafe", 0 }, -#define HEADSW 4 +#define HEADSW 2 { "headers", 0 }, -#define NHEADSW 5 +#define NHEADSW 3 { "noheaders", 0 }, -#define LISTSW 6 +#define LISTSW 4 { "list", 0 }, -#define NLISTSW 7 +#define NLISTSW 5 { "nolist", 0 }, -#define SIZESW 8 +#define SIZESW 6 { "realsize", 0 }, -#define NSIZESW 9 +#define NSIZESW 7 { "norealsize", 0 }, -#define RFC934SW 10 +#define RFC934SW 8 { "rfc934mode", 0 }, -#define NRFC934SW 11 +#define NRFC934SW 9 { "norfc934mode", 0 }, -#define VERBSW 12 +#define VERBSW 10 { "verbose", 0 }, -#define NVERBSW 13 +#define NVERBSW 11 { "noverbose", 0 }, -#define RCACHESW 14 +#define RCACHESW 12 { "rcache policy", 0 }, -#define WCACHESW 15 +#define WCACHESW 13 { "wcache policy", 0 }, -#define CONTENTIDSW 16 +#define CONTENTIDSW 14 { "contentid", 0 }, -#define NCONTENTIDSW 17 +#define NCONTENTIDSW 15 { "nocontentid", 0 }, -#define VERSIONSW 18 +#define VERSIONSW 16 { "version", 0 }, -#define HELPSW 19 +#define HELPSW 17 { "help", 0 }, -#define DEBUGSW 20 +#define DEBUGSW 18 { "debug", -5 }, { NULL, 0 } }; @@ -117,7 +112,6 @@ static void set_id(CT, int); static int compose_content(CT); static int scan_content(CT); static int build_headers(CT); -static char *calculate_digest(CT, int); static CT build_mime(char *); @@ -232,13 +226,6 @@ main(int argc, char **argv) } continue; - case CHECKSW: - checksw++; - continue; - case NCHECKSW: - checksw = 0; - continue; - case EBCDICSW: ebcdicsw++; continue; @@ -1730,8 +1717,7 @@ scan_content(CT ct) *ep = cp; } - if (contains8bit || ebcdicunsafe || linelen || linespace || - checksw) + if (contains8bit || ebcdicunsafe || linelen || linespace) ct->c_encoding = CE_QUOTED; else ct->c_encoding = CE_7BIT; @@ -1739,8 +1725,7 @@ scan_content(CT ct) case CT_APPLICATION: /* For application type, use base64, except when postscript */ - if (contains8bit || ebcdicunsafe || linelen || linespace || - checksw) + if (contains8bit || ebcdicunsafe || linelen || linespace) ct->c_encoding = (ct->c_subtype == APPLICATION_POSTSCRIPT) ? CE_QUOTED : CE_BASE64; @@ -1899,16 +1884,6 @@ skip_headers: return OK; /* - ** output the Content-MD5 - */ - if (checksw) { - np = getcpy(MD5_FIELD); - vp = calculate_digest(ct, (ct->c_encoding == CE_QUOTED) ? - 1 : 0); - add_header(ct, np, vp); - } - - /* ** output the Content-Transfer-Encoding */ switch (ct->c_encoding) { @@ -1992,97 +1967,3 @@ skip_headers: return OK; } - - -static char nib2b64[0x40+1] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -static char * -calculate_digest(CT ct, int asciiP) -{ - int cc; - char buffer[BUFSIZ], *vp, *op; - unsigned char *dp; - unsigned char digest[16]; - unsigned char outbuf[25]; - FILE *in; - MD5_CTX mdContext; - CE ce = ct->c_cefile; - char *infilename = ce->ce_file ? ce->ce_file : ct->c_file; - - /* open content */ - if ((in = fopen(infilename, "r")) == NULL) - adios (infilename, "unable to open for reading"); - - /* Initialize md5 context */ - MD5Init(&mdContext); - - /* calculate md5 message digest */ - if (asciiP) { - while (fgets(buffer, sizeof(buffer) - 1, in)) { - char c, *cp; - - cp = buffer + strlen(buffer) - 1; - if ((c = *cp) == '\n') - *cp = '\0'; - - MD5Update(&mdContext, (unsigned char *) buffer, - (unsigned int) strlen(buffer)); - - if (c == '\n') - MD5Update(&mdContext, (unsigned char *) "\r\n", - 2); - } - } else { - while ((cc = fread(buffer, sizeof(*buffer), sizeof(buffer), - in)) > 0) - MD5Update(&mdContext, (unsigned char *) buffer, - (unsigned int) cc); - } - - /* md5 finalization. Write digest and zero md5 context */ - MD5Final(digest, &mdContext); - - /* close content */ - fclose(in); - - /* print debugging info */ - if (debugsw) { - unsigned char *ep; - - fprintf(stderr, "MD5 digest="); - for (ep = (dp = digest) + sizeof(digest) / sizeof(digest[0]); - dp < ep; dp++) - fprintf(stderr, "%02x", *dp & 0xff); - fprintf(stderr, "\n"); - } - - /* encode the digest using base64 */ - for (dp = digest, op = outbuf, cc = sizeof(digest) / sizeof(digest[0]); - cc > 0; cc -= 3, op += 4) { - unsigned long bits; - char *bp; - - bits = (*dp++ & 0xff) << 16; - if (cc > 1) { - bits |= (*dp++ & 0xff) << 8; - if (cc > 2) - bits |= *dp++ & 0xff; - } - - for (bp = op + 4; bp > op; bits >>= 6) - *--bp = nib2b64[bits & 0x3f]; - if (cc < 3) { - *(op + 3) = '='; - if (cc < 2) - *(op + 2) = '='; - } - } - - /* null terminate string */ - outbuf[24] = '\0'; - - /* now make copy and return string */ - vp = concat(" ", outbuf, "\n", NULL); - return vp; -}