]> diplodocus.org Git - nmh/blobdiff - uip/mhshowsbr.c
Remove MIME content caching code
[nmh] / uip / mhshowsbr.c
index 92c2097492ca2a05b94d7042c469ac40c73c7025..9cd673312a9db2b0ff34f9d231a3c2e586984d32 100644 (file)
@@ -6,6 +6,10 @@
  */
 
 #include "h/mh.h"
+#include "sbr/fmt_new.h"
+#include "sbr/concat.h"
+#include "sbr/trimcpy.h"
+#include "sbr/check_charset.h"
 #include "sbr/getcpy.h"
 #include "sbr/context_find.h"
 #include "sbr/pidstatus.h"
@@ -13,7 +17,6 @@
 #include "sbr/error.h"
 #include <fcntl.h>
 #include "h/signals.h"
-#include "h/md5.h"
 #include "h/mts.h"
 #include "h/tws.h"
 #include "h/mime.h"
@@ -30,8 +33,6 @@
 
 extern int debugsw;
 
-int nolist   = 0;
-
 char *progsw = NULL;
 
 /* flags for moreproc/header display */
@@ -99,7 +100,6 @@ void
 show_all_messages(CT *cts, int concat, int textonly, int inlineonly)
 {
     CT ct, *ctp;
-    struct format *hfmt, *mfmt;
 
     /*
      * If form is not specified, then get default form
@@ -108,12 +108,6 @@ show_all_messages(CT *cts, int concat, int textonly, int inlineonly)
     if (!formsw)
        formsw = mh_xstrdup(etcpath("mhl.headers"));
 
-    /*
-     * Compile the content marker and header format lines
-     */
-    mfmt = compile_marker(markerform);
-    hfmt = compile_header(headerform);
-
     /*
      * If form is "mhl.null", suppress display of header.
      */
@@ -125,16 +119,30 @@ show_all_messages(CT *cts, int concat, int textonly, int inlineonly)
 
        /* if top-level type is ok, then display message */
        if (type_ok (ct, 1)) {
-           if (headersw) output_header(ct, hfmt);
+           /*
+            * Compile the content marker format line
+            */
+           struct format *mfmt = compile_marker(markerform);
+
+           if (headersw) {
+               /*
+                * Compile the header format line
+                */
+               struct format *hfmt = compile_header(headerform);
+               output_header(ct, hfmt);
+               fmt_free(hfmt, 0);
+           }
 
            show_single_message (ct, formsw, concat, textonly, inlineonly,
                                 mfmt);
+           fmt_free(mfmt, 0);
        }
     }
 
+    /* Reset the format component hashtable, which free's any components which
+       it references. */
+    fmt_free(NULL, 1);
     free_markercomps();
-    fmt_free(hfmt, 1);
-    fmt_free(mfmt, 1);
 }
 
 
@@ -466,7 +474,6 @@ show_content_aux2 (CT ct, int alternate, char *cracked, char *buffer,
     }
 
     vec = argsplit(buffer, &file, &vecp);
-    vec[vecp++] = NULL;
 
     fflush (stdout);
 
@@ -903,7 +910,7 @@ parse_display_string (CT ct, char *cp, int *xstdin, int *xlist,
 
            case 'l':
                /* display listing prior to displaying content */
-               *xlist = !nolist;
+               *xlist = 1;
                break;
 
            case 's':
@@ -1312,7 +1319,7 @@ compile_header(char *form)
 
     fmtstring = new_fs(form, NULL, DEFAULT_HEADER);
 
-    (void) fmt_compile(fmtstring, &fmt, 1);
+    (void) fmt_compile(fmtstring, &fmt, 0);
     free_fs();
 
     while ((comp = fmt_nextcomp(comp, &bucket)) != NULL) {
@@ -1335,7 +1342,7 @@ compile_marker(char *form)
 
     fmtstring = new_fs(form, NULL, DEFAULT_MARKER);
 
-    (void) fmt_compile(fmtstring, &fmt, 1);
+    (void) fmt_compile(fmtstring, &fmt, 0);
     free_fs();
 
     /*