X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhfree.c;h=df0ee4658eb3f6af5c91c7502da3b3468b8cfe67;hp=57518015f9cdb9816c56d0a259b5bb6f9d15a373;hb=d8916ff5d389de5ab225cd6f40aeda1b285d0f28;hpb=6c42153ad9362cc676ea66563bf400d7511b3b68 diff --git a/uip/mhfree.c b/uip/mhfree.c index 5751801..df0ee46 100644 --- a/uip/mhfree.c +++ b/uip/mhfree.c @@ -15,7 +15,8 @@ #include #include -extern int errno; +/* The list of top-level contents to display */ +CT *cts = NULL; /* * prototypes @@ -24,6 +25,7 @@ void free_content (CT); void free_header (CT); void free_ctinfo (CT); void free_encoding (CT, int); +void freects_done (int); /* * static prototypes @@ -103,6 +105,8 @@ free_content (CT ct) 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) @@ -271,6 +275,7 @@ free_encoding (CT ct, int toplevel) if (ce->ce_unlink) unlink (ce->ce_file); free (ce->ce_file); + ce->ce_file = NULL; } if (toplevel) { @@ -280,3 +285,16 @@ free_encoding (CT ct, int toplevel) ct->c_ceopenfnx = NULL; } } + + +void +freects_done (int status) +{ + CT *ctp; + + if ((ctp = cts)) + for (; *ctp; ctp++) + free_content (*ctp); + + exit (status); +}