#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;
void free_header(CT);
void free_ctinfo(CT);
void free_encoding(CT, int);
-void freects_done(int);
+void freects_done();
/*
** static prototypes
static void free_text(CT);
static void free_multi(CT);
static void free_partial(CT);
-static void free_external(CT);
/*
** parts which need to be freed.
*/
switch (ct->c_type) {
- case CT_MULTIPART:
- free_multi(ct);
- break;
-
- case CT_MESSAGE:
- switch (ct->c_subtype) {
- case MESSAGE_PARTIAL:
- free_partial(ct);
- break;
-
- case MESSAGE_EXTERNAL:
- free_external(ct);
- break;
- }
- break;
-
- case CT_TEXT:
- free_text(ct);
- break;
+ case CT_MULTIPART:
+ free_multi(ct);
+ break;
+
+ case CT_MESSAGE:
+ if (ct->c_subtype == MESSAGE_PARTIAL) {
+ free_partial(ct);
+ }
+ break;
+
+ case CT_TEXT:
+ free_text(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);
}
-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.
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);
+ }
+ }
}