From c97f1fc87c949570063b85f958e611251bfbf01f Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 5 Jul 2024 19:46:32 +0200 Subject: [PATCH] Support s6-rc for service control --- src/timedate.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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{ "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;