]> diplodocus.org Git - nmh/blobdiff - uip/mhstoresbr.c
First basic test of extended parameter output: working!
[nmh] / uip / mhstoresbr.c
index 3b68970297ffaa69739a2221abf95bf684d6162f..799bdb4287f217177831e9022d244b7439791442 100644 (file)
@@ -193,8 +193,8 @@ store_generic (CT ct)
 static int
 store_application (CT ct)
 {
 static int
 store_application (CT ct)
 {
-    char **ap, **ep;
     CI ci = &ct->c_ctinfo;
     CI ci = &ct->c_ctinfo;
+    PM pm;
 
     /* Check if the content specifies a filename */
     if (autosw)
 
     /* Check if the content specifies a filename */
     if (autosw)
@@ -208,10 +208,10 @@ store_application (CT ct)
     if (!ct->c_storeproc && ct->c_subtype == APPLICATION_OCTETS) {
        int tarP = 0, zP = 0, gzP = 0;
 
     if (!ct->c_storeproc && ct->c_subtype == APPLICATION_OCTETS) {
        int tarP = 0, zP = 0, gzP = 0;
 
-       for (ap = ci->ci_attrs, ep = ci->ci_values; *ap; ap++, ep++) {
+       for (pm = ci->ci_first_pm; pm; pm = pm->pm_next) {
            /* check for "type=tar" attribute */
            /* check for "type=tar" attribute */
-           if (!strcasecmp (*ap, "type")) {
-               if (strcasecmp (*ep, "tar"))
+           if (!strcasecmp (pm->pm_name, "type")) {
+               if (strcasecmp (pm->pm_value, "tar"))
                    break;
 
                tarP = 1;
                    break;
 
                tarP = 1;
@@ -219,14 +219,18 @@ store_application (CT ct)
            }
 
            /* check for "conversions=compress" attribute */
            }
 
            /* check for "conversions=compress" attribute */
-           if ((!strcasecmp (*ap, "conversions") || !strcasecmp (*ap, "x-conversions"))
-               && (!strcasecmp (*ep, "compress") || !strcasecmp (*ep, "x-compress"))) {
+           if ((!strcasecmp (pm->pm_name, "conversions") ||
+                !strcasecmp (pm->pm_name, "x-conversions"))
+               && (!strcasecmp (pm->pm_value, "compress") ||
+                   !strcasecmp (pm->pm_value, "x-compress"))) {
                zP = 1;
                continue;
            }
            /* check for "conversions=gzip" attribute */
                zP = 1;
                continue;
            }
            /* check for "conversions=gzip" attribute */
-           if ((!strcasecmp (*ap, "conversions") || !strcasecmp (*ap, "x-conversions"))
-               && (!strcasecmp (*ep, "gzip") || !strcasecmp (*ep, "x-gzip"))) {
+           if ((!strcasecmp (pm->pm_name, "conversions") ||
+                !strcasecmp (pm->pm_name, "x-conversions"))
+               && (!strcasecmp (pm->pm_value, "gzip") ||
+                   !strcasecmp (pm->pm_value, "x-gzip"))) {
                gzP = 1;
                continue;
            }
                gzP = 1;
                continue;
            }
@@ -626,7 +630,7 @@ got_filename:
      */
     if (ct->c_folder && (!is_partial || last_partial)) {
        msgnum = output_content_folder (ct->c_folder, ct->c_storage);
      */
     if (ct->c_folder && (!is_partial || last_partial)) {
        msgnum = output_content_folder (ct->c_folder, ct->c_storage);
-       unlink (ct->c_storage);
+       (void) m_unlink (ct->c_storage);
        if (msgnum == NOTOK)
            return NOTOK;
     }
        if (msgnum == NOTOK)
            return NOTOK;
     }
@@ -961,12 +965,12 @@ parse_format_string (CT ct, char *cp, char *buffer, int buflen, char *dir)
                        buflen--;
                        continue;
                    } else {
                        buflen--;
                        continue;
                    } else {
-                       char **ap, **ep;
+                       PM pm;
                        char *s = "";
 
                        char *s = "";
 
-                       for (ap = ci->ci_attrs, ep = ci->ci_values;
-                                *ap; ap++, ep++) {
-                           snprintf (bp, buflen, "%s%s=\"%s\"", s, *ap, *ep);
+                       for (pm = ci->ci_first_pm; pm; pm = pm->pm_next) {
+                           snprintf (bp, buflen, "%s%s=\"%s\"", s,
+                                     pm->pm_name, pm->pm_value);
                            len = strlen (bp);
                            bp += len;
                            buflen -= len;
                            len = strlen (bp);
                            bp += len;
                            buflen -= len;
@@ -1038,8 +1042,9 @@ raw:
 static void
 get_storeproc (CT ct)
 {
 static void
 get_storeproc (CT ct)
 {
-    char **ap, **ep, *cp;
+    char *cp;
     CI ci;
     CI ci;
+    PM pm;
 
     /*
      * If the storeproc has already been defined,
 
     /*
      * If the storeproc has already been defined,
@@ -1054,28 +1059,20 @@ get_storeproc (CT ct)
      * use that (RFC-2183).
      */
     if (ct->c_dispo) {
      * use that (RFC-2183).
      */
     if (ct->c_dispo) {
-       char *cp = strchr (ct->c_dispo, ';');
-       CI ci = calloc (1, sizeof *ci);
-       int status;
        int found_filename = 0;
 
        int found_filename = 0;
 
-       if (cp  &&  parse_header_attrs (ct->c_file, strlen (invo_name) + 2, &cp,
-                                        ci, &status) == OK) {
-           for (ap = ci->ci_attrs, ep = ci->ci_values; *ap; ap++, ep++) {
-               if (! strcasecmp (*ap, "filename")
-                   && *(cp = *ep) != '/'
+       for (pm = ct->c_dispo_first; pm; pm = pm->pm_next) {
+           if (! strcasecmp (pm->pm_name, "filename")
+                   && *(cp = pm->pm_value) != '/'
                    && *cp != '.'
                    && *cp != '|'
                    && *cp != '!'
                    && !strchr (cp, '%')) {
                    && *cp != '.'
                    && *cp != '|'
                    && *cp != '!'
                    && !strchr (cp, '%')) {
-                   ct->c_storeproc = add (cp, NULL);
-                   found_filename = 1;
-               }
-               free (*ap);
+               ct->c_storeproc = add (cp, NULL);
+               found_filename = 1;
            }
        }
 
            }
        }
 
-       free (ci);
        if (found_filename) return;
     }
 
        if (found_filename) return;
     }
 
@@ -1085,9 +1082,9 @@ get_storeproc (CT ct)
      * the storeproc.
      */
     ci = &ct->c_ctinfo;
      * the storeproc.
      */
     ci = &ct->c_ctinfo;
-    for (ap = ci->ci_attrs, ep = ci->ci_values; *ap; ap++, ep++) {
-       if (! strcasecmp (*ap, "name")
-           && *(cp = *ep) != '/'
+    for (pm = ci->ci_first_pm; pm; pm = pm->pm_next) {
+       if (! strcasecmp (pm->pm_name, "name")
+           && *(cp = pm->pm_value) != '/'
            && *cp != '.'
            && *cp != '|'
            && *cp != '!'
            && *cp != '.'
            && *cp != '|'
            && *cp != '!'