* mhfree.c -- routines to free the data structures used to
* -- represent MIME messages
*
- * $Id$
- *
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
*/
#include <h/mh.h>
-#include <errno.h>
#include <h/mime.h>
#include <h/mhparse.h>
-extern int errno;
+/* The list of top-level contents to display */
+CT *cts = NULL;
/*
* prototypes
*/
-void free_content (CT);
void free_header (CT);
void free_ctinfo (CT);
void free_encoding (CT, int);
+void freects_done (int);
/*
* static prototypes
free (ct->c_id);
if (ct->c_descr)
free (ct->c_descr);
+ if (ct->c_dispo)
+ free (ct->c_dispo);
if (ct->c_file) {
if (ct->c_unlink)
free (m->mp_start);
if (m->mp_stop)
free (m->mp_stop);
+ free (m->mp_content_before);
+ free (m->mp_content_after);
for (part = m->mp_parts; part; part = next) {
next = part->mp_next;
free_content (e->eb_content);
if (e->eb_body)
free (e->eb_body);
+ if (e->eb_url)
+ free (e->eb_url);
free ((char *) e);
ct->c_ctparams = NULL;
void
free_encoding (CT ct, int toplevel)
{
- CE ce;
-
- if (!(ce = ct->c_cefile))
- return;
+ CE ce = &ct->c_cefile;
if (ce->ce_fp) {
fclose (ce->ce_fp);
if (ce->ce_unlink)
unlink (ce->ce_file);
free (ce->ce_file);
+ ce->ce_file = NULL;
}
- if (toplevel) {
- free ((char *) ce);
- ct->c_cefile = NULL;
- } else {
+ if (! toplevel) {
ct->c_ceopenfnx = NULL;
}
}
+
+
+void
+freects_done (int status)
+{
+ CT *ctp;
+
+ if ((ctp = cts))
+ for (; *ctp; ctp++)
+ free_content (*ctp);
+
+ exit (status);
+}