Fix compilation

This commit is contained in:
RElesgoe 2018-07-27 04:40:16 -07:00
parent 0a20cf448a
commit 0c6402841f
7 changed files with 53 additions and 22 deletions

View file

@ -70,6 +70,7 @@ endif()
add_subdirectory(conf) add_subdirectory(conf)
add_subdirectory(files) add_subdirectory(files)
add_subdirectory(lib/fmt)
add_subdirectory(man) add_subdirectory(man)
add_subdirectory(src) add_subdirectory(src)
if(WITH_LUA) if(WITH_LUA)

View file

@ -11,4 +11,10 @@ set(FMT_SOURCES ${FMT_SOURCES}
${CMAKE_CURRENT_SOURCE_DIR}/time.h ${CMAKE_CURRENT_SOURCE_DIR}/time.h
) )
add_library(fmt STATIC ${FMT_SOURCES}) add_library(fmt ${FMT_SOURCES})
target_include_directories(fmt
PUBLIC
$<INSTALL_INTERFACE:lib>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/lib>
)

View file

@ -37,7 +37,6 @@ if (WITH_WIN32_GUI)
endif (WITH_WIN32_GUI) endif (WITH_WIN32_GUI)
subdirs(compat common win32 bntrackd client bniutils bnpass) subdirs(compat common win32 bntrackd client bniutils bnpass)
include_directories(${CMAKE_SOURCE_DIR}/lib)
if(WITH_BNETD) if(WITH_BNETD)
add_subdirectory(bnetd) add_subdirectory(bnetd)

View file

@ -53,9 +53,14 @@ else(WITH_WIN32_GUI)
add_executable(bnetd ${BNETD_SOURCES} ${BNETD_CONSOLE_RESOURCES}) add_executable(bnetd ${BNETD_SOURCES} ${BNETD_CONSOLE_RESOURCES})
endif(WITH_WIN32_GUI) endif(WITH_WIN32_GUI)
target_include_directories(bnetd PUBLIC ${CMAKE_SOURCE_DIR}/fmt) target_include_directories(bnetd
PUBLIC
$<INSTALL_INTERFACE:lib>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/lib>
PRIVATE
${CMAKE_SOURCE_DIR}/src
)
target_link_libraries(bnetd PUBLIC fmt common compat win32 ${NETWORK_LIBRARIES} target_link_libraries(bnetd common compat fmt win32 ${NETWORK_LIBRARIES} ${ZLIB_LIBRARIES} ${MYSQL_LIBRARIES} ${SQLITE3_LIBRARIES} ${PGSQL_LIBRARIES} ${ODBC_LIBRARIES} ${LUA_LIBRARIES})
${ZLIB_LIBRARIES} ${MYSQL_LIBRARIES} ${SQLITE3_LIBRARIES} ${PGSQL_LIBRARIES} ${ODBC_LIBRARIES} ${LUA_LIBRARIES})
install(TARGETS bnetd DESTINATION ${SBINDIR}) install(TARGETS bnetd DESTINATION ${SBINDIR})

View file

@ -2923,7 +2923,7 @@ namespace pvpgn
// read text from bnmotd_w3.txt // read text from bnmotd_w3.txt
{ {
fmt::MemoryWriter serverinfo; fmt::memory_buffer serverinfo;
std::string filename = i18n_filename(prefs_get_motdw3file(), conn_get_gamelang_localized(c)); std::string filename = i18n_filename(prefs_get_motdw3file(), conn_get_gamelang_localized(c));
std::FILE* fp = std::fopen(filename.c_str(), "r"); std::FILE* fp = std::fopen(filename.c_str(), "r");
@ -2932,7 +2932,7 @@ namespace pvpgn
while (char* buff = file_get_line(fp)) while (char* buff = file_get_line(fp))
{ {
char* line = message_format_line(c, buff); char* line = message_format_line(c, buff);
serverinfo << (line + 1) << '\n'; fmt::format_to(serverinfo, "{}" + '\n', (line + 1));
xfree((void*)line); xfree((void*)line);
} }
@ -2941,7 +2941,7 @@ namespace pvpgn
eventlog(eventlog_level_error, __FUNCTION__, "could not close motdw3 file \"{}\" after reading (std::fopen: {})", filename, std::strerror(errno)); eventlog(eventlog_level_error, __FUNCTION__, "could not close motdw3 file \"{}\" after reading (std::fopen: {})", filename, std::strerror(errno));
} }
} }
packet_append_string(rpacket, serverinfo.c_str()); packet_append_string(rpacket, fmt::to_string(serverinfo).c_str());
} }
conn_push_outqueue(c, rpacket); conn_push_outqueue(c, rpacket);

View file

@ -18,6 +18,10 @@
#ifndef INCLUDED_LOCALIZATION_TYPES #ifndef INCLUDED_LOCALIZATION_TYPES
#define INCLUDED_LOCALIZATION_TYPES #define INCLUDED_LOCALIZATION_TYPES
#include <vector>
#include "common/tag.h"
namespace pvpgn namespace pvpgn
{ {
namespace bnetd namespace bnetd
@ -42,6 +46,7 @@ namespace pvpgn
#define JUST_NEED_TYPES #define JUST_NEED_TYPES
# include <string> # include <string>
# include "connection.h" # include "connection.h"
#include <fmt/format.h> #include <fmt/format.h>
#undef JUST_NEED_TYPES #undef JUST_NEED_TYPES
@ -53,6 +58,8 @@ namespace pvpgn
extern int i18n_load(void); extern int i18n_load(void);
extern int i18n_reload(void); extern int i18n_reload(void);
const char * _find_string(char const * text, t_gamelang gamelang);
extern std::string i18n_filename(const char * filename, t_tag gamelang); extern std::string i18n_filename(const char * filename, t_tag gamelang);
extern t_language language_find_by_country(const char * code, bool &found); extern t_language language_find_by_country(const char * code, bool &found);
extern t_language language_find_by_tag(t_gamelang gamelang, bool &found); extern t_language language_find_by_tag(t_gamelang gamelang, bool &found);
@ -70,21 +77,26 @@ namespace pvpgn
template <typename... Args> template <typename... Args>
std::string _localize(t_connection * c, const char * func, fmt::string_view format_str, const Args& ... args) std::string _localize(t_connection * c, const char * func, fmt::string_view format_str, const Args& ... args)
{ {
const char *format = fmt; if (!c)
std::string output(fmt); {
t_gamelang lang;
if (!c) {
eventlog(eventlog_level_error, __FUNCTION__, "got bad connection"); eventlog(eventlog_level_error, __FUNCTION__, "got bad connection");
return format; return fmt::to_string(format_str);
} }
std::string output;
try try
{ {
t_gamelang lang;
const char *format = fmt::to_string(format_str).c_str();
if (lang = conn_get_gamelang_localized(c)) if (lang = conn_get_gamelang_localized(c))
if (!(format = _find_string(fmt, lang))) {
format = fmt; // if not found use original if (!(format = _find_string(fmt::to_string(format_str).c_str(), lang)))
{
format = fmt::to_string(format_str).c_str(); // if not found use original
}
}
output = fmt::format(format, args); output = fmt::format(format, args...);
char tmp[MAX_MESSAGE_LEN]; char tmp[MAX_MESSAGE_LEN];
std::snprintf(tmp, sizeof tmp, "%s", output.c_str()); std::snprintf(tmp, sizeof tmp, "%s", output.c_str());
@ -94,7 +106,7 @@ namespace pvpgn
} }
catch (const std::exception& e) catch (const std::exception& e)
{ {
WARN2("Can't format translation string \"{}\" ({})", fmt, e.what()); WARN2("Can't format translation string \"{}\" ({})", format_str, e.what());
} }
return output; return output;

View file

@ -20,7 +20,15 @@ set(COMMON_SOURCES
xstring.cpp xstring.h gui_printf.h gui_printf.cpp xstring.cpp xstring.h gui_printf.h gui_printf.cpp
bigint.cpp bigint.h bnetsrp3.cpp bnetsrp3.h peerchat.cpp peerchat.h bigint.cpp bigint.h bnetsrp3.cpp bnetsrp3.h peerchat.cpp peerchat.h
wol_gameres_protocol.h pugiconfig.h pugixml.cpp pugixml.h) wol_gameres_protocol.h pugiconfig.h pugixml.cpp pugixml.h)
add_library(common
${COMMON_SOURCES} add_library(common ${COMMON_SOURCES})
target_include_directories(common
PUBLIC
$<INSTALL_INTERFACE:lib>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/lib>
PRIVATE
${CMAKE_SOURCE_DIR}/src
) )
target_link_libraries(common fmt)
target_link_libraries(common PUBLIC fmt)