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;
+}