X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhfree.c;h=c87306691f453bb4a6753700c4eab7a8738a4dc3;hp=6918e0e35a47958627e5d823a37d57398da3bcd9;hb=d6742b1bb19c7eca8488402484a6e4f55543d789;hpb=714b5c530ece27ea2835a313013f5b770163403c diff --git a/uip/mhfree.c b/uip/mhfree.c index 6918e0e..c873066 100644 --- a/uip/mhfree.c +++ b/uip/mhfree.c @@ -11,6 +11,7 @@ #include #include #include +#include /* 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); /* @@ -64,31 +64,25 @@ free_content(CT 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); @@ -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); + } + } }