From 80163dc6c1d3e31fa26c8b9515ecfbf76767442f Mon Sep 17 00:00:00 2001 From: gabime Date: Fri, 23 Feb 2018 18:16:43 +0200 Subject: [PATCH] Better support for WinRT --- include/spdlog/details/os.h | 9 ++++++--- include/spdlog/details/spdlog_impl.h | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/spdlog/details/os.h b/include/spdlog/details/os.h index 2b8f3e95..26d1fd16 100644 --- a/include/spdlog/details/os.h +++ b/include/spdlog/details/os.h @@ -154,10 +154,13 @@ SPDLOG_CONSTEXPR static const char folder_sep = '/'; inline void prevent_child_fd(FILE *f) { + #ifdef _WIN32 +#if !defined(__cplusplus_winrt) auto file_handle = (HANDLE)_get_osfhandle(_fileno(f)); if (!::SetHandleInformation(file_handle, HANDLE_FLAG_INHERIT, 0)) throw spdlog_ex("SetHandleInformation failed", errno); +#endif #else auto fd = fileno(f); if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) @@ -351,7 +354,7 @@ inline size_t _thread_id() //Return current thread id as size_t (from thread local storage) inline size_t thread_id() { -#if defined(SPDLOG_DISABLE_TID_CACHING) || (defined(_MSC_VER) && (_MSC_VER < 1900)) || (defined(__clang__) && !__has_feature(cxx_thread_local)) +#if defined(SPDLOG_DISABLE_TID_CACHING) || (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__cplusplus_winrt ) || (defined(__clang__) && !__has_feature(cxx_thread_local)) return _thread_id(); #else // cache thread id in tls static thread_local const size_t tid = _thread_id(); @@ -367,7 +370,7 @@ inline size_t thread_id() inline void sleep_for_millis(int milliseconds) { #if defined(_WIN32) - Sleep(milliseconds); + ::Sleep(milliseconds); #else std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); #endif @@ -436,7 +439,7 @@ inline int pid() { #ifdef _WIN32 - return ::_getpid(); + return static_cast(::GetCurrentProcessId()); #else return static_cast(::getpid()); #endif diff --git a/include/spdlog/details/spdlog_impl.h b/include/spdlog/details/spdlog_impl.h index 25c7b7e9..9733a733 100644 --- a/include/spdlog/details/spdlog_impl.h +++ b/include/spdlog/details/spdlog_impl.h @@ -16,7 +16,7 @@ #include "../sinks/syslog_sink.h" #endif -#ifdef _WIN32 +#if defined _WIN32 && !defined(__cplusplus_winrt) #include "../sinks/wincolor_sink.h" #else #include "../sinks/ansicolor_sink.h" @@ -107,7 +107,8 @@ inline std::shared_ptr spdlog::stderr_logger_st(const std::strin // // stdout/stderr color loggers // -#ifdef _WIN32 +#if defined _WIN32 && !defined(__cplusplus_winrt) + inline std::shared_ptr spdlog::stdout_color_mt(const std::string& logger_name) { auto sink = std::make_shared();