summaryrefslogtreecommitdiff
path: root/src/timedate.cpp
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-07-05 19:46:32 +0200
committerEugen Wissner <belka@caraus.de>2024-07-05 19:46:32 +0200
commitc97f1fc87c949570063b85f958e611251bfbf01f (patch)
treef186d9ccd4568f41027c56a5de5a6d912fdc2bcb /src/timedate.cpp
parent78f9939afc1bd24f5c929bfc8a643bbffedb35c5 (diff)
downloadslack-timedate-c97f1fc87c949570063b85f958e611251bfbf01f.tar.gz
Support s6-rc for service controlv2.0
Diffstat (limited to 'src/timedate.cpp')
-rw-r--r--src/timedate.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/timedate.cpp b/src/timedate.cpp
index 509bb95..c67ab52 100644
--- a/src/timedate.cpp
+++ b/src/timedate.cpp
@@ -255,6 +255,24 @@ namespace dlackware::timedate
void set_ntp(bool use_ntp, bool)
{
+ try
+ {
+ std::string service_state = use_ntp ? "-u" : "-d";
+ const auto command_flags = Glib::SpawnFlags::SPAWN_SEARCH_PATH
+ | Glib::SpawnFlags::SPAWN_STDERR_TO_DEV_NULL | Glib::SpawnFlags::SPAWN_STDERR_TO_DEV_NULL;
+ int wait_status{-1};
+
+ Glib::spawn_sync("", std::vector<std::string>{ "s6-rc", service_state, "change", "ntpd" },
+ command_flags, {}, nullptr, nullptr, &wait_status);
+
+ if (wait_status == 0 || wait_status == 0x300) // Unknown service name in the arguments.
+ {
+ return;
+ }
+ }
+ catch (const Glib::SpawnError& spawn_error)
+ {
+ }
std::filesystem::perms rc_mode = std::filesystem::perms::owner_read | std::filesystem::perms::owner_write
| std::filesystem::perms::group_read | std::filesystem::perms::others_read;