X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhfree.c;h=c9a0418813b90a034ce19f16d5a5139886c535b4;hp=b9f15aa7a1e0c8c7c7404486ce1198bd4157cd85;hb=fede6e42d81ce34fd5c1bbe7fb2757b281c2573a;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1 diff --git a/uip/mhfree.c b/uip/mhfree.c index b9f15aa..c9a0418 100644 --- a/uip/mhfree.c +++ b/uip/mhfree.c @@ -1,11 +1,11 @@ /* - * mhfree.c -- routines to free the data structures used to - * -- represent MIME messages - * - * 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. - */ +** mhfree.c -- routines to free the data structures used to +** -- represent MIME messages +** +** 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 #include @@ -16,119 +16,112 @@ 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); +** prototypes +*/ +void free_content(CT); +void free_header(CT); +void free_ctinfo(CT); +void free_encoding(CT, 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); +** static prototypes +*/ +static void free_text(CT); +static void free_multi(CT); +static void free_partial(CT); /* - * Primary routine to free a MIME content structure - */ +** Primary routine to free a MIME content structure +*/ void -free_content (CT ct) +free_content(CT ct) { if (!ct) return; /* - * free all the header fields - */ - free_header (ct); + ** free all the header fields + */ + free_header(ct); if (ct->c_partno) - free (ct->c_partno); + free(ct->c_partno); if (ct->c_vrsn) - free (ct->c_vrsn); + free(ct->c_vrsn); if (ct->c_ctline) - free (ct->c_ctline); + free(ct->c_ctline); - free_ctinfo (ct); + free_ctinfo(ct); /* - * some of the content types have extra - * parts which need to be freed. - */ + ** some of the content types have extra + ** 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); + free(ct->c_showproc); if (ct->c_storeproc) - free (ct->c_storeproc); + free(ct->c_storeproc); if (ct->c_celine) - free (ct->c_celine); + free(ct->c_celine); /* free structures for content encodings */ - free_encoding (ct, 1); + free_encoding(ct, 1); if (ct->c_id) - free (ct->c_id); + free(ct->c_id); if (ct->c_descr) - free (ct->c_descr); + free(ct->c_descr); if (ct->c_dispo) - free (ct->c_dispo); + free(ct->c_dispo); if (ct->c_file) { if (ct->c_unlink) - unlink (ct->c_file); - free (ct->c_file); + unlink(ct->c_file); + free(ct->c_file); } if (ct->c_fp) - fclose (ct->c_fp); + fclose(ct->c_fp); if (ct->c_storage) - free (ct->c_storage); + free(ct->c_storage); if (ct->c_folder) - free (ct->c_folder); + free(ct->c_folder); - free (ct); + free(ct); } /* - * Free the linked list of header fields - * for this content. - */ +** Free the linked list of header fields +** for this content. +*/ void -free_header (CT ct) +free_header(CT ct) { HF hp1, hp2; @@ -136,9 +129,9 @@ free_header (CT ct) while (hp1) { hp2 = hp1->next; - free (hp1->name); - free (hp1->value); - free (hp1); + free(hp1->name); + free(hp1->value); + free(hp1); hp1 = hp2; } @@ -149,50 +142,50 @@ free_header (CT ct) void -free_ctinfo (CT ct) +free_ctinfo(CT ct) { char **ap; CI ci; ci = &ct->c_ctinfo; if (ci->ci_type) { - free (ci->ci_type); + free(ci->ci_type); ci->ci_type = NULL; } if (ci->ci_subtype) { - free (ci->ci_subtype); + free(ci->ci_subtype); ci->ci_subtype = NULL; } for (ap = ci->ci_attrs; *ap; ap++) { - free (*ap); + free(*ap); *ap = NULL; } if (ci->ci_comment) { - free (ci->ci_comment); + free(ci->ci_comment); ci->ci_comment = NULL; } if (ci->ci_magic) { - free (ci->ci_magic); + free(ci->ci_magic); ci->ci_magic = NULL; } } static void -free_text (CT ct) +free_text(CT ct) { struct text *t; if (!(t = (struct text *) ct->c_ctparams)) return; - free ((char *) t); + free((char *) t); ct->c_ctparams = NULL; } static void -free_multi (CT ct) +free_multi(CT ct) { struct multipart *m; struct part *part, *next; @@ -201,24 +194,24 @@ free_multi (CT ct) return; if (m->mp_start) - free (m->mp_start); + free(m->mp_start); if (m->mp_stop) - free (m->mp_stop); + free(m->mp_stop); for (part = m->mp_parts; part; part = next) { next = part->mp_next; - free_content (part->mp_part); - free ((char *) part); + free_content(part->mp_part); + free((char *) part); } m->mp_parts = NULL; - free ((char *) m); + free((char *) m); ct->c_ctparams = NULL; } static void -free_partial (CT ct) +free_partial(CT ct) { struct partial *p; @@ -226,37 +219,20 @@ free_partial (CT ct) return; if (p->pm_partid) - free (p->pm_partid); + free(p->pm_partid); - free ((char *) p); - ct->c_ctparams = NULL; -} - - -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); + free((char *) p); ct->c_ctparams = NULL; } /* - * Free data structures related to encoding/decoding - * Content-Transfer-Encodings. - */ +** Free data structures related to encoding/decoding +** Content-Transfer-Encodings. +*/ void -free_encoding (CT ct, int toplevel) +free_encoding(CT ct, int toplevel) { CE ce; @@ -264,19 +240,19 @@ free_encoding (CT ct, int toplevel) return; if (ce->ce_fp) { - fclose (ce->ce_fp); + fclose(ce->ce_fp); ce->ce_fp = NULL; } if (ce->ce_file) { if (ce->ce_unlink) - unlink (ce->ce_file); - free (ce->ce_file); + unlink(ce->ce_file); + free(ce->ce_file); ce->ce_file = NULL; } if (toplevel) { - free ((char *) ce); + free((char *) ce); ct->c_cefile = NULL; } else { ct->c_ceopenfnx = NULL; @@ -285,13 +261,13 @@ free_encoding (CT ct, int toplevel) void -freects_done (int status) +freects_done() { CT *ctp; - if ((ctp = cts)) - for (; *ctp; ctp++) - free_content (*ctp); - - exit (status); + if ((ctp = cts)) { + for (; *ctp; ctp++){ + free_content(*ctp); + } + } }