X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Fcleanup.c;h=ec8017d02369f261784f5dad92f6d65be7c27ace;hb=ac7521c1d40b86cd7d33cef590353692542fa0a4;hp=4ad970ceaf44365e6b16202b00b4ce8ba3fa6ed2;hpb=dd9d65ee727ac7e95801da0f8b5bae7009811802;p=plomrogue diff --git a/src/server/cleanup.c b/src/server/cleanup.c index 4ad970c..ec8017d 100644 --- a/src/server/cleanup.c +++ b/src/server/cleanup.c @@ -1,15 +1,23 @@ -/* src/server/cleanup.c */ +/* src/server/cleanup.c + * + * This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3 + * or any later version. For details on its copyright, license, and warranties, + * see the file NOTICE in the root directory of the PlomRogue source package. + */ #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 "../common/readwrite.h" /* try_fclose() */ +#include "hardcoded_strings.h" /* s */ +#include "thing_actions.h" /* free_thing_actions() */ +#include "things.h" /* free_things(), free_thing_types() */ #include "world.h" /* global world */ + /* The clean-up flags set by set_cleanup_flag(). */ static uint32_t cleanup_flags = 0x0000; @@ -18,28 +26,34 @@ static uint32_t cleanup_flags = 0x0000; extern void cleanup() { free(world.queue); - free(world.log); free(world.map.cells); - if (cleanup_flags & CLEANUP_OUTFILE) + if (cleanup_flags & CLEANUP_WORLDSTATE) + { + unlink(s[S_PATH_WORLDSTATE]); + } + if (cleanup_flags & CLEANUP_THINGS) + { + free_things(world.things); + } + if (cleanup_flags & CLEANUP_THING_TYPES) { - unlink(world.path_out); + free_thing_types(world.thing_types); } - if (cleanup_flags & CLEANUP_MAP_OBJECTS) + if (cleanup_flags & CLEANUP_THING_ACTIONS) { - free_map_objects(world.map_objs); + free_thing_actions(world.thing_actions); } - if (cleanup_flags & CLEANUP_MAP_OBJECT_DEFS) + if (cleanup_flags & CLEANUP_IN) { - free_map_object_defs(world.map_obj_defs); + try_fclose(world.file_in, __func__); + unlink(s[S_PATH_IN]); } - if (cleanup_flags & CLEANUP_MAP_OBJECT_ACTS) + if (cleanup_flags & CLEANUP_OUT) { - free_map_object_actions(world.map_obj_acts); + try_fclose(world.file_out, __func__); + free(world.server_test); + unlink(s[S_PATH_OUT]); } - 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. */ } @@ -47,3 +61,10 @@ extern void set_cleanup_flag(enum cleanup_flag flag) { cleanup_flags = cleanup_flags | flag; } + + + +extern void unset_cleanup_flag(enum cleanup_flag flag) +{ + cleanup_flags = cleanup_flags ^ flag; +}