home · contact · privacy
Server/py: Remove superfluous line.
[plomrogue] / src / server / cleanup.c
index 4ad970ceaf44365e6b16202b00b4ce8ba3fa6ed2..ec8017d02369f261784f5dad92f6d65be7c27ace 100644 (file)
@@ -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 <stdint.h> /* uint32_t */
 #include <stdlib.h> /* free() */
 #include <unistd.h> /* 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;
+}