Removed RFC 1864 (Content-MD5) support. I.e. -check switches.
[mmh] / uip / mhbuild.c
index 5f29d0e..e6caba3 100644 (file)
@@ -16,7 +16,6 @@
 #include <h/mh.h>
 #include <fcntl.h>
 #include <h/signals.h>
-#include <h/md5.h>
 #include <errno.h>
 #include <signal.h>
 #include <h/tws.h>
 #include <time.h>
 
 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;
-}