mhbuild: Removed support for creating message/external-body parts.
[mmh] / uip / mhbuild.c
index e12f272..f659a30 100644 (file)
@@ -664,7 +664,7 @@ fgetstr(char *s, int n, FILE *stream)
 static int
 user_content(FILE *in, char *file, char *buf, CT *ctp)
 {
-       int extrnal, vrsn;
+       int vrsn;
        unsigned char *cp;
        char **ap;
        char buffer[BUFSIZ];
@@ -845,11 +845,13 @@ call_init:
        ** must be some type of explicit directive.
        */
 
-       /* check if directive is external-type */
-       extrnal = (buf[1] == '@');
+       if (buf[1] == '@') {
+               adios(NULL, "The #@ directive i.e. message/external-body "
+                               "is not supported anymore.");
+       }
 
        /* parse directive */
-       if (get_ctinfo(buf + (extrnal ? 2 : 1), ct, 1) == NOTOK)
+       if (get_ctinfo(buf+1, ct, 1) == NOTOK)
                done(1);
 
        /* check directive against the list of MIME types */
@@ -861,8 +863,7 @@ call_init:
        ** Check if the directive specified a valid type.
        ** This will happen if it was one of the following forms:
        **
-       **    #type/subtype  (or)
-       **    #@type/subtype
+       **    #type/subtype
        */
        if (s2i->si_key) {
                if (!ci->ci_subtype)
@@ -874,10 +875,11 @@ call_init:
                        /* NOTREACHED */
 
                case CT_MESSAGE:
-                       if (!mh_strcasecmp(ci->ci_subtype, "partial"))
+                       if (!mh_strcasecmp(ci->ci_subtype, "partial") ||
+                                       !mh_strcasecmp(ci->ci_subtype,
+                                       "external-body")) {
                                adios(NULL, "sorry, \"#%s/%s\" isn't supported", ci->ci_type, ci->ci_subtype);
-                       if (!mh_strcasecmp(ci->ci_subtype, "external-body"))
-                               adios(NULL, "use \"#@type/subtype ... [] ...\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype);
+                       }
 use_forw:
                        adios(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype);
                        /* NOTREACHED */
@@ -888,52 +890,6 @@ use_forw:
                        break;
                }
 
-               /*
-               ** #@type/subtype (external types directive)
-               */
-               if (extrnal) {
-                       struct exbody *e;
-                       CT p;
-
-                       if (!ci->ci_magic)
-                               adios(NULL, "need external information for \"#@%s/%s\"", ci->ci_type, ci->ci_subtype);
-                       p = ct;
-
-                       snprintf(buffer, sizeof(buffer), "message/external-body; %s", ci->ci_magic);
-                       free(ci->ci_magic);
-                       ci->ci_magic = NULL;
-
-                       /*
-                       ** Since we are using the current Content structure to
-                       ** hold information about the type of the external
-                       ** reference, we need to create another Content
-                       ** structure for the message/external-body to wrap
-                       ** it in.
-                       */
-                       if ((ct = (CT) calloc(1, sizeof(*ct))) == NULL)
-                               adios(NULL, "out of memory");
-                       *ctp = ct;
-                       ci = &ct->c_ctinfo;
-                       if (get_ctinfo(buffer, ct, 0) == NOTOK)
-                               done(1);
-                       ct->c_type = CT_MESSAGE;
-                       ct->c_subtype = MESSAGE_EXTERNAL;
-
-                       if ((e = (struct exbody *)
-                                       calloc(1, sizeof(*e))) == NULL)
-                               adios(NULL, "out of memory");
-                       ct->c_ctparams = (void *) e;
-
-                       e->eb_parent = ct;
-                       e->eb_content = p;
-                       p->c_ctexbody = e;
-
-                       if (params_external(ct, 1) == NOTOK)
-                               done(1);
-
-                       return OK;
-               }
-
                /* Handle [file] argument */
                if (ci->ci_magic) {
                        /* check if specifies command to execute */
@@ -976,10 +932,6 @@ use_forw:
                return OK;
        }
 
-       if (extrnal)
-               adios(NULL, "external definition not allowed for \"#%s\"",
-                               ci->ci_type);
-
        /*
        ** Message directive
        ** #forw [+folder] [msgs]
@@ -1544,12 +1496,7 @@ scan_content(CT ct)
                checkebcdic = 0;
                checklinelen = 0;
                checklinespace = 0;
-
-               /* don't check anything for message/external */
-               if (ct->c_subtype == MESSAGE_EXTERNAL)
-                       checkboundary = 0;
-               else
-                       checkboundary = 1;
+               checkboundary = 1;
                break;
 
        case CT_AUDIO:
@@ -1713,7 +1660,7 @@ scan_content(CT ct)
 static int
 build_headers(CT ct)
 {
-       int cc, mailbody, len;
+       int cc, len;
        char **ap, **ep;
        char *np, *vp, buffer[BUFSIZ];
        CI ci = &ct->c_ctinfo;
@@ -1756,18 +1703,11 @@ build_headers(CT ct)
        len = strlen(TYPE_FIELD) + strlen(ci->ci_type) +
                        strlen(ci->ci_subtype) + 3;
 
-       mailbody = ct->c_type == CT_MESSAGE &&
-                       ct->c_subtype == MESSAGE_EXTERNAL &&
-                       ((struct exbody *) ct->c_ctparams)->eb_body;
-
        /*
        ** Append the attribute/value pairs to
        ** the end of the Content-Type line.
        */
        for (ap = ci->ci_attrs, ep = ci->ci_values; *ap; ap++, ep++) {
-               if (mailbody && !mh_strcasecmp(*ap, "body"))
-                       continue;
-
                vp = add(";", vp);
                len++;
 
@@ -1831,14 +1771,6 @@ build_headers(CT ct)
 
 skip_headers:
        /*
-       ** If this is the internal content structure for a
-       ** "message/external", then we are done with the
-       ** headers (since it has no body).
-       */
-       if (ct->c_ctexbody)
-               return OK;
-
-       /*
        ** output the Content-Transfer-Encoding
        */
        switch (ct->c_encoding) {
@@ -1906,15 +1838,6 @@ skip_headers:
        }
                break;
 
-       case CT_MESSAGE:
-               if (ct->c_subtype == MESSAGE_EXTERNAL) {
-                       struct exbody *e;
-
-                       e = (struct exbody *) ct->c_ctparams;
-                       build_headers(e->eb_content);
-               }
-               break;
-
        default:
                /* Nothing to do */
                break;