home · contact · privacy
Test return values of _all_ *printf() calls.
[plomrogue] / src / server / init.c
index 624d800f6db17a0492922fc1aba7fe867fb66f57..1060474c32a1fb1e1ef9de39049e1ec976057ce9 100644 (file)
@@ -15,7 +15,7 @@
 #include "../common/readwrite.h" /* try_fopen(), try_fclose(), textfile_width(),
                                   * try_fgets(), try_fwrite()
                                   */
-#include "../common/rexit.h" /* exit_err() */
+#include "../common/rexit.h" /* exit_err(), exit_trouble() */
 #include "../common/try_malloc.h" /* try_malloc() */
 #include "cleanup.h" /* set_cleanup_flag() */
 #include "field_of_view.h" /* build_fov_map() */
@@ -43,7 +43,7 @@ static void replay_game()
     exit_err(access(s[PATH_RECORD], F_OK), "No record found to replay.");
     FILE * file = try_fopen(s[PATH_RECORD], "r", f_name);
     uint32_t linemax = textfile_width(file);
-    char line[linemax + 1];
+    char * line = try_malloc(linemax + 1, f_name);
     while (   world.turn < world.replay
            && NULL != try_fgets(line, linemax + 1, file, f_name))
     {
@@ -61,6 +61,7 @@ static void replay_game()
             }
         }
     }
+    free(line);
     try_fclose(file, f_name);
 }
 
@@ -99,7 +100,8 @@ extern void setup_server_io()
     exit_trouble(test && EEXIST != errno, f_name, "mkdir()");
     world.file_out = try_fopen(s[PATH_OUT], "w", f_name);
     world.server_test = try_malloc(10 + 1 + 10 + 1 + 1, f_name);
-    sprintf(world.server_test, "%d %d\n", getpid(), (int) time(0));
+    test = sprintf(world.server_test, "%d %d\n", getpid(), (int) time(0));
+    exit_trouble(test < 0, f_name, "sprintf()");
     try_fwrite(world.server_test, strlen(world.server_test), 1,
                world.file_out, f_name);
     fflush(world.file_out);
@@ -170,7 +172,7 @@ extern void run_game()
     {
         FILE * file = try_fopen(path_savefile, "r", f_name);
         uint32_t linemax = textfile_width(file);
-        char line[linemax + 1];
+        char * line = try_malloc(linemax + 1, f_name);
         while (NULL != try_fgets(line, linemax + 1, file, f_name))
         {
             if (strlen(line) && strcmp("\n", line))
@@ -178,14 +180,17 @@ extern void run_game()
                 obey_msg(line, 0);
             }
         }
+        free(line);
         try_fclose(file, f_name);
     }
     else
     {
         char * command = s[CMD_MAKE_WORLD];
-        char msg[strlen(command) + 1 + 11 + 1];
-        sprintf(msg, "%s %d", command, (int) time(NULL));
+        char * msg = try_malloc(strlen(command) + 1 + 11 + 1, f_name);
+        int test = sprintf(msg, "%s %d", command, (int) time(NULL));
+        exit_trouble(test < 0, f_name, "sprintf()");
         obey_msg(msg, 1);
+        free(msg);
     }
     io_loop();
 }