X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fclient%2Fcleanup.c;fp=src%2Fclient%2Fcleanup.c;h=7df98e7c4bd716ccc441ff2d263f317bf4df4a39;hb=dd9d65ee727ac7e95801da0f8b5bae7009811802;hp=0000000000000000000000000000000000000000;hpb=c3d87a1dee96775443fdf73c53e1350af7ca5fc2;p=plomrogue diff --git a/src/client/cleanup.c b/src/client/cleanup.c new file mode 100644 index 0000000..7df98e7 --- /dev/null +++ b/src/client/cleanup.c @@ -0,0 +1,41 @@ +/* src/client/cleanup.c */ + +#include "cleanup.h" +#include /* uint32_t */ +#include /* free() */ +#include "command_db.h" /* free_command_db() */ +#include "misc.h" /* unload_interface_conf() */ +#include "windows.h" /* free_winmeta_and_endwin() */ +#include "world.h" /* world global */ + + + +/* The clean-up flags set by set_cleanup_flag(). */ +static uint32_t cleanup_flags = 0x0000; + + + +extern void cleanup() +{ + free(world.map.cells); + free(world.log); + free(world.player_inventory); + if (cleanup_flags & CLEANUP_INTERFACE)/* Must come pre ncurses cleanup, */ + { /* for by closing all windows it */ + unload_interface_conf(); /* relies on world.wmeta data freed */ + } /* by free_winmeta_and_endwin(). */ + if (cleanup_flags & CLEANUP_NCURSES) + { + free_winmeta_and_endwin(); + } + if (cleanup_flags & CLEANUP_COMMANDS) + { + free_command_db(); + } +} + + +extern void set_cleanup_flag(enum cleanup_flag flag) +{ + cleanup_flags = cleanup_flags | flag; +}