From 7fa9e2817df9b9ef3f0290f7f86357939829e588 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Fri, 4 Mar 2022 13:48:12 -0600 Subject: [PATCH] Further refactor time_helper.h Actions: * Remove superfluous includes to boost/date_time, iostream, and pragma_comp_defs.h * Include cstdio for snprintf * Include string for std::string * Move get_gmt_time to top of module for following step * Use thread-safe get_gmt_time instead of unsafe gm_time in function get_internet_time_str() * In get_time_interval_string(), add explicit (int) casts to git rid of VS4996 warnings * In get_time_interval_string(), use snprintf instead of boost::lexical_casts and string concats * In file epee_utils.cpp, include boost/range/iterator_range.hpp for boost::make_iterator_range. Previously, epee_util.cpp was including some file which was including time_helper which included a boost header which included iterator_range.hpp at some point, which allowed epee_util.cpp to compile without an explicit include of iterator_range.hpp. I added it because I removed the boost includes in the first step which broke epee_util.cpp. --- contrib/epee/include/time_helper.h | 53 +++++++++++++----------------- tests/unit_tests/epee_utils.cpp | 1 + 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/contrib/epee/include/time_helper.h b/contrib/epee/include/time_helper.h index bfbcd5a23..5d2c43c78 100644 --- a/contrib/epee/include/time_helper.h +++ b/contrib/epee/include/time_helper.h @@ -28,46 +28,48 @@ #pragma once -#include -#include #include +#include #include -#include - -#include "pragma_comp_defs.h" +#include namespace epee { namespace misc_utils { + inline bool get_gmt_time(time_t t, struct tm &tm) + { +#ifdef _WIN32 + return gmtime_s(&tm, &t); +#else + return gmtime_r(&t, &tm); +#endif + } + inline std::string get_internet_time_str(const time_t& time_) { char tmpbuf[200] = {0}; - tm* pt = NULL; -PRAGMA_WARNING_PUSH -PRAGMA_WARNING_DISABLE_VS(4996) - pt = gmtime(&time_); -PRAGMA_WARNING_POP - strftime( tmpbuf, 199, "%a, %d %b %Y %H:%M:%S GMT", pt ); + struct tm pt; + get_gmt_time(time_, pt); + strftime( tmpbuf, 199, "%a, %d %b %Y %H:%M:%S GMT", &pt ); return tmpbuf; } inline std::string get_time_interval_string(const time_t& time_) { - std::string res; time_t tail = time_; -PRAGMA_WARNING_PUSH -PRAGMA_WARNING_DISABLE_VS(4244) - int days = tail/(60*60*24); + const int days = (int) (tail/(60*60*24)); tail = tail%(60*60*24); - int hours = tail/(60*60); + const int hours = (int) (tail/(60*60)); tail = tail%(60*60); - int minutes = tail/(60); + const int minutes = (int) (tail/(60)); tail = tail%(60); - int seconds = tail; -PRAGMA_WARNING_POP - res = std::string() + "d" + boost::lexical_cast(days) + ".h" + boost::lexical_cast(hours) + ".m" + boost::lexical_cast(minutes) + ".s" + boost::lexical_cast(seconds); - return res; + const int seconds = (int) tail; + + char tmpbuf[64] = {0}; + snprintf(tmpbuf, sizeof(tmpbuf) - 1, "d%d.h%d.m%d.s%d", days, hours, minutes, seconds); + + return tmpbuf; } inline uint64_t get_ns_count() @@ -81,14 +83,5 @@ PRAGMA_WARNING_POP { return get_ns_count() / 1000000; } - - inline bool get_gmt_time(time_t t, struct tm &tm) - { -#ifdef _WIN32 - return gmtime_s(&tm, &t); -#else - return gmtime_r(&t, &tm); -#endif - } } } \ No newline at end of file diff --git a/tests/unit_tests/epee_utils.cpp b/tests/unit_tests/epee_utils.cpp index b83a809b7..73f1b3774 100644 --- a/tests/unit_tests/epee_utils.cpp +++ b/tests/unit_tests/epee_utils.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include