X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=src%2Fserver%2Fio.c;h=761655cf9877206e30f9c0636676038f195810fd;hb=e4ae4fc25ee35e0dcbba7331e7a4fe1eb4818422;hp=e4a40d0ccc13685d076080a82d467bbd8c920d99;hpb=150b9f88a4c73caad8fcf0b850db8e52e4f4c6ae;p=plomrogue diff --git a/src/server/io.c b/src/server/io.c index e4a40d0..761655c 100644 --- a/src/server/io.c +++ b/src/server/io.c @@ -72,7 +72,7 @@ static void write_key_value(FILE * file, char * key, uint32_t value) try_fwrite(key, strlen(key), 1, file, f_name); try_fputc(' ', file, f_name); char * line = try_malloc(11, f_name); - exit_trouble(-1 == sprintf(line, "%u", value), f_name, "sprintf()"); + exit_trouble(-1 == sprintf(line, "%u", value), f_name, s[S_FCN_SPRINTF]); try_fwrite(line, strlen(line), 1, file, f_name); free(line); try_fputc('\n', file, f_name); @@ -183,7 +183,7 @@ static void update_worldstate_file() uint16_t size = strlen(s[S_PATH_WORLDSTATE])+strlen(s[S_PATH_SUFFIX_TMP])+1; char * path_tmp = try_malloc(size, f_name); int test=sprintf(path_tmp,"%s%s",s[S_PATH_WORLDSTATE],s[S_PATH_SUFFIX_TMP]); - exit_trouble(test < 0, f_name, "sprintf()"); + exit_trouble(test < 0, f_name, s[S_FCN_SPRINTF]); FILE * file = try_fopen(path_tmp, "w", f_name); struct Thing * player = get_player(); write_value_as_line(world.turn, file); @@ -211,7 +211,7 @@ static void write_value_as_line(uint32_t value, FILE * file) { char * f_name = "write_value_as_line()"; char write_buf[12]; /* Holds 10 digits of uint32_t maximum + \n + \0. */ - exit_trouble(sprintf(write_buf, "%u\n", value) < 0, f_name, "sprintf()"); + exit_trouble(sprintf(write_buf, "%u\n",value) < 0, f_name,s[S_FCN_SPRINTF]); try_fwrite(write_buf, strlen(write_buf), 1, file, f_name); } @@ -331,8 +331,11 @@ extern char * io_round() extern void save_world() { char * f_name = "save_world()"; - char * path = s[S_PATH_SAVE]; - FILE * file = try_fopen(path, "w", f_name); + uint16_t size = strlen(s[S_PATH_SAVE]) + strlen(s[S_PATH_SUFFIX_TMP]) + 1; + char * path_tmp = try_malloc(size, f_name); + int test=sprintf(path_tmp,"%s%s",s[S_PATH_SAVE], s[S_PATH_SUFFIX_TMP]); + exit_trouble(test < 0, f_name, s[S_FCN_SPRINTF]); + FILE * file = try_fopen(path_tmp, "w", f_name); write_key_value(file, s[S_CMD_DO_FOV], 0); try_fputc('\n', file, f_name); write_key_value(file, s[S_CMD_SEED_MAP], world.seed_map); @@ -345,5 +348,6 @@ extern void save_world() write_thing(file, t); } write_key_value(file, s[S_CMD_DO_FOV], 1); - try_fclose(file, f_name); + try_fclose_unlink_rename(file, path_tmp, s[S_PATH_SAVE], f_name); + free(path_tmp); }