add free_field as standard for struct field
[mmh] / uip / mhfree.c
index dd1277c..c873066 100644 (file)
@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <h/mime.h>
 #include <h/mhparse.h>
+#include <unistd.h>
 
 /* The list of top-level contents to display */
 CT *cts = NULL;
@@ -22,7 +23,7 @@ void free_content(CT);
 void free_header(CT);
 void free_ctinfo(CT);
 void free_encoding(CT, int);
-void freects_done(int);
+void freects_done();
 
 /*
 ** static prototypes
@@ -30,7 +31,6 @@ void freects_done(int);
 static void free_text(CT);
 static void free_multi(CT);
 static void free_partial(CT);
-static void free_external(CT);
 
 
 /*
@@ -69,14 +69,8 @@ free_content(CT ct)
                break;
 
        case CT_MESSAGE:
-               switch (ct->c_subtype) {
-               case MESSAGE_PARTIAL:
+               if (ct->c_subtype == MESSAGE_PARTIAL) {
                        free_partial(ct);
-                       break;
-
-               case MESSAGE_EXTERNAL:
-                       free_external(ct);
-                       break;
                }
                break;
 
@@ -85,10 +79,10 @@ free_content(CT ct)
                break;
        }
 
+       if (ct->c_charset)
+               free(ct->c_charset);
        if (ct->c_showproc)
                free(ct->c_showproc);
-       if (ct->c_termproc)
-               free(ct->c_termproc);
        if (ct->c_storeproc)
                free(ct->c_storeproc);
 
@@ -233,23 +227,6 @@ free_partial(CT ct)
 }
 
 
-static void
-free_external(CT ct)
-{
-       struct exbody *e;
-
-       if (!(e = (struct exbody *) ct->c_ctparams))
-               return;
-
-       free_content(e->eb_content);
-       if (e->eb_body)
-               free(e->eb_body);
-
-       free((char *) e);
-       ct->c_ctparams = NULL;
-}
-
-
 /*
 ** Free data structures related to encoding/decoding
 ** Content-Transfer-Encodings.
@@ -285,13 +262,13 @@ free_encoding(CT ct, int toplevel)
 
 
 void
-freects_done(int status)
+freects_done()
 {
        CT *ctp;
 
-       if ((ctp = cts))
-               for (; *ctp; ctp++)
+       if ((ctp = cts)) {
+               for (; *ctp; ctp++){
                        free_content(*ctp);
-
-       exit(status);
+               }
+       }
 }