aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2018-01-18 18:14:12 -0500
committerRiccardo Spagni <ric@spagni.net>2018-01-18 18:14:12 -0500
commitd2ff91cb17d15895271cb7d03128dc023c4daeab (patch)
treea688b16e32870eeea9ffcf253133ca951ec6ab13
parentMerge pull request #3103 (diff)
parentepee: detect strptime, use std::get_time as fallback (diff)
downloadmonero-d2ff91cb17d15895271cb7d03128dc023c4daeab.tar.xz
Merge pull request #3107
b7e5a70b epee: detect strptime, use std::get_time as fallback (moneromooo-monero)
-rw-r--r--CMakeLists.txt4
-rw-r--r--contrib/epee/include/storages/portable_storage_val_converters.h6
2 files changed, 10 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b27c10bd..a0508adfd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -868,5 +868,9 @@ option(INSTALL_VENDORED_LIBUNBOUND "Install libunbound binary built from source
CHECK_C_COMPILER_FLAG(-std=c11 HAVE_C11)
+include(CheckLibraryExists)
+include(CheckFunctionExists)
+
check_library_exists(c memset_s "string.h" HAVE_MEMSET_S)
check_library_exists(c explicit_bzero "strings.h" HAVE_EXPLICIT_BZERO)
+check_function_exists(strptime HAVE_STRPTIME)
diff --git a/contrib/epee/include/storages/portable_storage_val_converters.h b/contrib/epee/include/storages/portable_storage_val_converters.h
index 5d9664a65..36bb28627 100644
--- a/contrib/epee/include/storages/portable_storage_val_converters.h
+++ b/contrib/epee/include/storages/portable_storage_val_converters.h
@@ -150,8 +150,14 @@ POP_WARNINGS
else if (boost::regex_match (from, boost::regex("\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\dZ")))
{
// Convert to unix timestamp
+#ifdef HAVE_STRPTIME
struct tm tm;
if (strptime(from.c_str(), "%Y-%m-%dT%H:%M:%S", &tm))
+#else
+ std::tm tm = {};
+ std::istringstream ss(from);
+ if (ss >> std::get_time(&tm, "%Y-%m-%dT%H:%M:%S"))
+#endif
to = std::mktime(&tm);
} else
ASSERT_AND_THROW_WRONG_CONVERSION();