From 799802f93b4460fab187839535ccdbabd8408b6c Mon Sep 17 00:00:00 2001 From: John Armstrong Date: Wed, 18 May 2022 16:30:36 -0700 Subject: [PATCH] Add FMT_STRING to allow compilation with FMT_ENFORCE_COMPILE_STRING --- include/spdlog/common.h | 4 +++- include/spdlog/details/fmt_helper.h | 2 +- include/spdlog/fmt/bin_to_hex.h | 2 +- include/spdlog/logger.h | 2 +- include/spdlog/sinks/daily_file_sink.h | 6 +++--- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/spdlog/common.h b/include/spdlog/common.h index 09ffefbb..f97fd48c 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -46,11 +46,13 @@ #if !defined(SPDLOG_USE_STD_FORMAT) && FMT_VERSION >= 80000 // backward compatibility with fmt versions older than 8 # define SPDLOG_FMT_RUNTIME(format_string) fmt::runtime(format_string) +# define SPDLOG_FMT_STRING(format_string) FMT_STRING(format_string) # if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) # include # endif #else # define SPDLOG_FMT_RUNTIME(format_string) format_string +# define SPDLOG_FMT_STRING(format_string) format_string #endif // visual studio up to 2013 does not support noexcept nor constexpr @@ -308,7 +310,7 @@ struct file_event_handlers { file_event_handlers() : before_open(nullptr) - , after_open (nullptr) + , after_open(nullptr) , before_close(nullptr) , after_close(nullptr) {} diff --git a/include/spdlog/details/fmt_helper.h b/include/spdlog/details/fmt_helper.h index 1a60bc0d..d3c355d5 100644 --- a/include/spdlog/details/fmt_helper.h +++ b/include/spdlog/details/fmt_helper.h @@ -107,7 +107,7 @@ inline void pad2(int n, memory_buf_t &dest) } else // unlikely, but just in case, let fmt deal with it { - fmt_lib::format_to(std::back_inserter(dest), "{:02}", n); + fmt_lib::format_to(std::back_inserter(dest), SPDLOG_FMT_STRING("{:02}"), n); } } diff --git a/include/spdlog/fmt/bin_to_hex.h b/include/spdlog/fmt/bin_to_hex.h index 2a5d02c9..47fec05b 100644 --- a/include/spdlog/fmt/bin_to_hex.h +++ b/include/spdlog/fmt/bin_to_hex.h @@ -241,7 +241,7 @@ struct formatter, char> if (put_positions) { - spdlog::fmt_lib::format_to(inserter, "{:04X}: ", pos); + spdlog::fmt_lib::format_to(inserter, SPDLOG_FMT_STRING("{:04X}: "), pos); } } }; diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index b97994db..14c719fc 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -33,7 +33,7 @@ { \ if (location.filename) \ { \ - err_handler_(fmt_lib::format("{} [{}({})]", ex.what(), location.filename, location.line)); \ + err_handler_(fmt_lib::format(SPDLOG_FMT_STRING("{} [{}({})]"), ex.what(), location.filename, location.line)); \ } \ else \ { \ diff --git a/include/spdlog/sinks/daily_file_sink.h b/include/spdlog/sinks/daily_file_sink.h index bb566e18..b07b771d 100644 --- a/include/spdlog/sinks/daily_file_sink.h +++ b/include/spdlog/sinks/daily_file_sink.h @@ -32,8 +32,8 @@ struct daily_filename_calculator { filename_t basename, ext; std::tie(basename, ext) = details::file_helper::split_by_extension(filename); - return fmt_lib::format( - SPDLOG_FILENAME_T("{}_{:04d}-{:02d}-{:02d}{}"), basename, now_tm.tm_year + 1900, now_tm.tm_mon + 1, now_tm.tm_mday, ext); + return fmt_lib::format(SPDLOG_FMT_STRING(SPDLOG_FILENAME_T("{}_{:04d}-{:02d}-{:02d}{}")), basename, now_tm.tm_year + 1900, + now_tm.tm_mon + 1, now_tm.tm_mday, ext); } }; @@ -76,7 +76,7 @@ struct daily_filename_format_calculator return buf; #else // generate fmt datetime format string, e.g. {:%Y-%m-%d}. - filename_t fmt_filename = fmt::format(SPDLOG_FILENAME_T("{{:{}}}"), filename); + filename_t fmt_filename = fmt::format(SPDLOG_FMT_STRING(SPDLOG_FILENAME_T("{{:{}}}")), filename); # if defined(_MSC_VER) && defined(SPDLOG_WCHAR_FILENAMES) // for some reason msvc doesn't allow fmt::runtime(..) with wchar here return fmt::format(fmt_filename, now_tm); # else