X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Fcleanup.c;fp=src%2Fserver%2Fcleanup.c;h=4ad970ceaf44365e6b16202b00b4ce8ba3fa6ed2;hb=dd9d65ee727ac7e95801da0f8b5bae7009811802;hp=0000000000000000000000000000000000000000;hpb=c3d87a1dee96775443fdf73c53e1350af7ca5fc2;p=plomrogue diff --git a/src/server/cleanup.c b/src/server/cleanup.c new file mode 100644 index 0000000..4ad970c --- /dev/null +++ b/src/server/cleanup.c @@ -0,0 +1,49 @@ +/* src/server/cleanup.c */ + +#include "cleanup.h" +#include /* uint32_t */ +#include /* free() */ +#include /* unlink() */ +#include "map_object_actions.h" /* free_map_object_actions() */ +#include "map_objects.h" /* free_map_objects(), free_map_object_defs() */ +#include "world.h" /* global world */ + + + +/* The clean-up flags set by set_cleanup_flag(). */ +static uint32_t cleanup_flags = 0x0000; + + + +extern void cleanup() +{ + free(world.queue); + free(world.log); + free(world.map.cells); + if (cleanup_flags & CLEANUP_OUTFILE) + { + unlink(world.path_out); + } + if (cleanup_flags & CLEANUP_MAP_OBJECTS) + { + free_map_objects(world.map_objs); + } + if (cleanup_flags & CLEANUP_MAP_OBJECT_DEFS) + { + free_map_object_defs(world.map_obj_defs); + } + if (cleanup_flags & CLEANUP_MAP_OBJECT_ACTS) + { + free_map_object_actions(world.map_obj_acts); + } + if (cleanup_flags & CLEANUP_FIFO) /* Fifo also serves as lockfile that */ + { /* affirms the running of a server */ + unlink(world.path_in); /* instance. Therefore it should be */ + } /* the last thing to be deleted. */ +} + + +extern void set_cleanup_flag(enum cleanup_flag flag) +{ + cleanup_flags = cleanup_flags | flag; +}