timedated: modernization

Switch to sd_event_set_signal_exit() and use Type=notify
This commit is contained in:
Mike Yuan 2024-01-09 19:48:39 +08:00
parent f359b3073f
commit c3ff3175d6
No known key found for this signature in database
GPG Key ID: 417471C0A40F58B3
2 changed files with 8 additions and 8 deletions

View File

@ -22,6 +22,7 @@
#include "clock-util.h"
#include "conf-files.h"
#include "constants.h"
#include "daemon-util.h"
#include "fd-util.h"
#include "fileio-label.h"
#include "fileio.h"
@ -1118,21 +1119,15 @@ static int run(int argc, char *argv[]) {
umask(0022);
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
r = sd_event_default(&event);
if (r < 0)
return log_error_errno(r, "Failed to allocate event loop: %m");
(void) sd_event_set_watchdog(event, true);
r = sd_event_add_signal(event, NULL, SIGINT, NULL, NULL);
r = sd_event_set_signal_exit(event, true);
if (r < 0)
return log_error_errno(r, "Failed to install SIGINT handler: %m");
r = sd_event_add_signal(event, NULL, SIGTERM, NULL, NULL);
if (r < 0)
return log_error_errno(r, "Failed to install SIGTERM handler: %m");
return log_error_errno(r, "Failed to install SIGINT/SIGTERM handlers: %m");
r = connect_bus(&context, event, &bus);
if (r < 0)
@ -1148,6 +1143,10 @@ static int run(int argc, char *argv[]) {
if (r < 0)
return r;
r = sd_notify(false, NOTIFY_READY);
if (r < 0)
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
r = bus_event_loop_with_idle(event, bus, "org.freedesktop.timedate1", DEFAULT_EXIT_USEC, NULL, NULL);
if (r < 0)
return log_error_errno(r, "Failed to run event loop: %m");

View File

@ -14,6 +14,7 @@ Documentation=man:localtime(5)
Documentation=man:org.freedesktop.timedate1(5)
[Service]
Type=notify
BusName=org.freedesktop.timedate1
CapabilityBoundingSet=CAP_SYS_TIME
DeviceAllow=char-rtc r