summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2016-11-07 20:26:28 +0100
committerlouiz’ <louiz@louiz.org>2016-11-07 20:26:28 +0100
commita52baa52e25c9767d1be95a10b2a56334aaeb471 (patch)
tree27744e76699c8bc2630e2289233d744f642fd114
parent597cfce4b88f9318ed8b580e8b26df9be8fc637a (diff)
downloadbiboumi-a52baa52e25c9767d1be95a10b2a56334aaeb471.tar.gz
biboumi-a52baa52e25c9767d1be95a10b2a56334aaeb471.tar.bz2
biboumi-a52baa52e25c9767d1be95a10b2a56334aaeb471.tar.xz
biboumi-a52baa52e25c9767d1be95a10b2a56334aaeb471.zip
Workaround for debian and other old OS that do not have std::put_time
-rw-r--r--louloulibs/CMakeLists.txt8
-rw-r--r--louloulibs/louloulibs.h.cmake1
-rw-r--r--src/xmpp/biboumi_adhoc_commands.cpp12
3 files changed, 21 insertions, 0 deletions
diff --git a/louloulibs/CMakeLists.txt b/louloulibs/CMakeLists.txt
index 1858bb3..908c35f 100644
--- a/louloulibs/CMakeLists.txt
+++ b/louloulibs/CMakeLists.txt
@@ -156,4 +156,12 @@ check_cxx_source_compiles("
mark_as_advanced(HAS_GET_TIME)
+check_cxx_source_compiles("
+ #include <iomanip>
+ int main()
+ { std::put_time(nullptr, \"\"); }"
+ HAS_PUT_TIME)
+
+mark_as_advanced(HAS_PUT_TIME)
+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/louloulibs.h.cmake ${CMAKE_BINARY_DIR}/src/louloulibs.h)
diff --git a/louloulibs/louloulibs.h.cmake b/louloulibs/louloulibs.h.cmake
index d5328b8..6131b70 100644
--- a/louloulibs/louloulibs.h.cmake
+++ b/louloulibs/louloulibs.h.cmake
@@ -8,3 +8,4 @@
#cmakedefine SOFTWARE_VERSION "${SOFTWARE_VERSION}"
#cmakedefine PROJECT_NAME "${PROJECT_NAME}"
#cmakedefine HAS_GET_TIME
+#cmakedefine HAS_PUT_TIME
diff --git a/src/xmpp/biboumi_adhoc_commands.cpp b/src/xmpp/biboumi_adhoc_commands.cpp
index 1349a66..003b901 100644
--- a/src/xmpp/biboumi_adhoc_commands.cpp
+++ b/src/xmpp/biboumi_adhoc_commands.cpp
@@ -15,6 +15,10 @@
#include <database/database.hpp>
#endif
+#ifndef HAS_PUT_TIME
+#include <ctime>
+#endif
+
using namespace std::string_literals;
void DisconnectUserStep1(XmppComponent& xmpp_component, AdhocSession&, XmlNode& command_node)
@@ -766,7 +770,15 @@ void GetIrcConnectionInfoStep1(XmppComponent& component, AdhocSession& session,
if (irc->is_using_tls())
ss << " (using TLS)";
const std::time_t now_c = std::chrono::system_clock::to_time_t(irc->connection_date);
+#ifdef HAS_PUT_TIME
ss << " since " << std::put_time(std::localtime(&now_c), "%F %T");
+#else
+ constexpr std::size_t timestamp_size{10 + 1 + 8 + 1};
+ char buf[timestamp_size] = {};
+ const auto res = std::strftime(buf, timestamp_size, "%F %T", std::localtime(&now_c));
+ if (res > 0)
+ ss << " since " << buf;
+#endif
ss << " (" << std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now() - irc->connection_date).count() << " seconds ago).";
for (const auto& it: bridge->resources_in_chan)