From b96ba5a2e0e4f24ec8b343c2a7a6c2b871b78591 Mon Sep 17 00:00:00 2001 From: Linus Probert Date: Tue, 23 Jan 2018 21:03:43 +0100 Subject: [PATCH] Fixed build for windows Created m_sprintf to make msvc happy. --- src/gui.c | 4 +++- src/map_lua.c | 1 + src/monster.c | 4 ++-- src/player.c | 13 +++++++++---- src/util.c | 19 ++++++++++++++++++- src/util.h | 12 +++++++++--- 6 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/gui.c b/src/gui.c index 998353d..08a112d 100644 --- a/src/gui.c +++ b/src/gui.c @@ -1,5 +1,6 @@ #include #include +#include #include "gui.h" #include "util.h" @@ -187,13 +188,14 @@ gui_render_panel(Gui *gui, unsigned int width, unsigned int height, Camera *cam) void gui_log(char *message) { + // TODO(Linus): This could take va_args, would be nicer char *new_message; unsigned int i; assert(strlen(message) <= log_data.strlen); new_message = ec_malloc(log_data.strlen * sizeof(char)); - m_strcpy(new_message, 200, message); + m_strcpy(new_message, log_data.strlen, message); log_data.count++; if (log_data.count > log_data.len) { diff --git a/src/map_lua.c b/src/map_lua.c index 15c75cc..43c3529 100644 --- a/src/map_lua.c +++ b/src/map_lua.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include diff --git a/src/monster.c b/src/monster.c index 88bfdea..09cf3d0 100644 --- a/src/monster.c +++ b/src/monster.c @@ -69,10 +69,10 @@ has_collided(Monster *monster, RoomMatrix *matrix) player_hit(space->player, dmg); if (dmg > 0) - sprintf(msg, "Monster '%s' hit you for %u damage", + m_sprintf(msg, 200, "Monster '%s' hit you for %u damage", monster->label, dmg); else - sprintf(msg, "Monster '%s' missed you", monster->label); + m_sprintf(msg, 200, "Monster '%s' missed you", monster->label); gui_log(msg); free(msg); diff --git a/src/player.c b/src/player.c index 238336d..efe5d81 100644 --- a/src/player.c +++ b/src/player.c @@ -37,13 +37,18 @@ has_collided(Player *player, RoomMatrix *matrix) else player->misses += 1; + char *msg = ec_malloc(200 * sizeof(char)); if (hit > 0) { - char *msg = ec_malloc(200 * sizeof(char)); - sprintf(msg, "You hit '%s' for %u damage", + printf("Dmg: %u, Label: %s\n", hit, space->monster->label); + m_sprintf(msg, 200, "You hit '%s' for %u damage", space->monster->label, hit); gui_log(msg); - free(msg); + } else { + m_sprintf(msg, 200, "You missed '%s'", + space->monster->label); + gui_log(msg); } + free(msg); if (space->monster->stats.hp <= 0) { // TODO(Linus): This needs some love later on. @@ -51,7 +56,7 @@ has_collided(Player *player, RoomMatrix *matrix) player->xp += 10; char *msg = ec_malloc(200 * sizeof(char)); - sprintf(msg, "You killed '%s' and gained %d xp", + m_sprintf(msg, 200, "You killed '%s' and gained %d xp", space->monster->label, 10); gui_log(msg); free(msg); diff --git a/src/util.c b/src/util.c index 97eedc2..601d12f 100644 --- a/src/util.c +++ b/src/util.c @@ -1,7 +1,9 @@ -#include "defines.h" #include #include #include +#include + +#include "defines.h" #ifndef _WIN32 #include @@ -35,6 +37,21 @@ m_strncat(char *dest, #endif // _MSC_VER } +void +m_sprintf(char * dest, size_t destsz, const char * format, ...) +{ + va_list args; + + va_start(args, format); +#ifndef _MSC_VER + UNUSED(destsz); + vsprintf(dest, format, args); +#else // _MSC_VER + vsprintf_s(dest, destsz, format, args); +#endif // _MSC_VER + va_end(args); +} + void fatal(char *message) { char error_message[100]; diff --git a/src/util.h b/src/util.h index dbb8982..a71096c 100644 --- a/src/util.h +++ b/src/util.h @@ -1,13 +1,19 @@ #ifndef UTIL_H_ #define UTIL_H_ -void fatal(char *message); +void +fatal(char *message); -void *ec_malloc(unsigned int size); +void * +ec_malloc(unsigned int size); -void m_strcpy(char *dest, size_t destsz, char *src); +void +m_strcpy(char *dest, size_t destsz, char *src); void m_strncat(char *dest, size_t destsz, char *src, size_t srcsz); +void +m_sprintf(char *dest, size_t destsz, const char *format, ...); + #endif // UTIL_H_