summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--louloulibs/louloulibs.h.cmake1
-rw-r--r--louloulibs/utils/system.cpp21
-rw-r--r--louloulibs/utils/system.hpp8
-rw-r--r--louloulibs/xmpp/xmpp_component.cpp3
-rw-r--r--tests/utils.cpp7
5 files changed, 38 insertions, 2 deletions
diff --git a/louloulibs/louloulibs.h.cmake b/louloulibs/louloulibs.h.cmake
index ebb9b9a..e2b2e25 100644
--- a/louloulibs/louloulibs.h.cmake
+++ b/louloulibs/louloulibs.h.cmake
@@ -1,4 +1,3 @@
-#define SYSTEM_NAME "${CMAKE_SYSTEM}"
#cmakedefine ICONV_SECOND_ARGUMENT_IS_CONST
#cmakedefine LIBIDN_FOUND
#cmakedefine SYSTEMD_FOUND
diff --git a/louloulibs/utils/system.cpp b/louloulibs/utils/system.cpp
new file mode 100644
index 0000000..c0bee11
--- /dev/null
+++ b/louloulibs/utils/system.cpp
@@ -0,0 +1,21 @@
+#include <logger/logger.hpp>
+#include <utils/system.hpp>
+#include <sys/utsname.h>
+#include <cstring>
+
+using namespace std::string_literals;
+
+namespace utils
+{
+std::string get_system_name()
+{
+ struct utsname uts;
+ const int res = ::uname(&uts);
+ if (res == -1)
+ {
+ log_error("uname failed: ", std::strerror(errno));
+ return "Unknown";
+ }
+ return uts.sysname + " "s + uts.release;
+}
+} \ No newline at end of file
diff --git a/louloulibs/utils/system.hpp b/louloulibs/utils/system.hpp
new file mode 100644
index 0000000..7ea1677
--- /dev/null
+++ b/louloulibs/utils/system.hpp
@@ -0,0 +1,8 @@
+#pragma once
+
+#include <string>
+
+namespace utils
+{
+std::string get_system_name();
+} \ No newline at end of file
diff --git a/louloulibs/xmpp/xmpp_component.cpp b/louloulibs/xmpp/xmpp_component.cpp
index e1b6131..e40b1e4 100644
--- a/louloulibs/xmpp/xmpp_component.cpp
+++ b/louloulibs/xmpp/xmpp_component.cpp
@@ -5,6 +5,7 @@
#include <xmpp/xmpp_component.hpp>
#include <config/config.hpp>
+#include <utils/system.hpp>
#include <utils/time.hpp>
#include <xmpp/auth.hpp>
#include <xmpp/jid.hpp>
@@ -585,7 +586,7 @@ void XmppComponent::send_version(const std::string& id, const std::string& jid_t
}
{
XmlSubNode os(query, "os");
- os.set_inner(SYSTEM_NAME);
+ os.set_inner(utils::get_system_name());
}
}
else
diff --git a/tests/utils.cpp b/tests/utils.cpp
index d1f0edf..b8a3e75 100644
--- a/tests/utils.cpp
+++ b/tests/utils.cpp
@@ -8,6 +8,7 @@
#include <utils/empty_if_fixed_server.hpp>
#include <utils/get_first_non_empty.hpp>
#include <utils/time.hpp>
+#include <utils/system.hpp>
#include <utils/scopeguard.hpp>
using namespace std::string_literals;
@@ -151,3 +152,9 @@ TEST_CASE("scope_guard")
}
CHECK(res);
}
+
+TEST_CASE("system_name")
+{
+ CHECK(utils::get_system_name() != "Unknown");
+ CHECK(!utils::get_system_name().empty());
+} \ No newline at end of file