home · contact · privacy
Server: Internally, rename "map object" stuff to "thing" stuff.
[plomrogue] / src / server / cleanup.c
index 4ad970ceaf44365e6b16202b00b4ce8ba3fa6ed2..1959c1c831aedf979bd777b999a0bf09b5cff015 100644 (file)
@@ -4,12 +4,14 @@
 #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 "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;
 
@@ -17,29 +19,37 @@ static uint32_t cleanup_flags = 0x0000;
 
 extern void cleanup()
 {
+    char * f_name = "cleanup()";
     free(world.queue);
     free(world.log);
     free(world.map.cells);
-    if (cleanup_flags & CLEANUP_OUTFILE)
+    if (cleanup_flags & CLEANUP_WORLDSTATE)
     {
-        unlink(world.path_out);
+        unlink(world.path_worldstate);
+    }
+    if (cleanup_flags & CLEANUP_THINGS)
+    {
+        free_things(world.things);
+    }
+    if (cleanup_flags & CLEANUP_THING_TYPES)
+    {
+        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, f_name);
+        unlink(world.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, f_name);
+        free(world.server_test);
+        unlink(world.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 +57,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;
+}