time-wait: define main through macro

This commit is contained in:
Yu Watanabe 2018-11-23 04:55:17 +09:00
parent 1f47bc3349
commit 1d03c5c16f
1 changed files with 23 additions and 34 deletions

View File

@ -22,6 +22,7 @@
#include "fd-util.h"
#include "fs-util.h"
#include "main-func.h"
#include "missing.h"
#include "signal-util.h"
#include "time-util.h"
@ -185,61 +186,49 @@ static int clock_state_update(
return r;
}
int main(int argc, char * argv[]) {
int r;
static int run(int argc, char * argv[]) {
_cleanup_(sd_event_unrefp) sd_event *event;
ClockState state = {
_cleanup_(clock_state_release) ClockState state = {
.timerfd_fd = -1,
.inotify_fd = -1,
.run_systemd_wd = -1,
.run_systemd_timesync_wd = -1,
};
int r;
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
r = sd_event_default(&event);
if (r < 0) {
log_error_errno(r, "Failed to allocate event loop: %m");
goto finish;
}
if (r < 0)
return log_error_errno(r, "Failed to allocate event loop: %m");
r = sd_event_add_signal(event, NULL, SIGTERM, NULL, NULL);
if (r < 0) {
log_error_errno(r, "Failed to create sigterm event source: %m");
goto finish;
}
if (r < 0)
return log_error_errno(r, "Failed to create sigterm event source: %m");
r = sd_event_add_signal(event, NULL, SIGINT, NULL, NULL);
if (r < 0) {
log_error_errno(r, "Failed to create sigint event source: %m");
goto finish;
}
if (r < 0)
return log_error_errno(r, "Failed to create sigint event source: %m");
r = sd_event_set_watchdog(event, true);
if (r < 0) {
log_error_errno(r, "Failed to create watchdog event source: %m");
goto finish;
}
if (r < 0)
return log_error_errno(r, "Failed to create watchdog event source: %m");
r = inotify_init1(IN_NONBLOCK|IN_CLOEXEC);
if (r < 0) {
log_error_errno(errno, "Failed to create inotify descriptor: %m");
goto finish;
}
if (r < 0)
return log_error_errno(errno, "Failed to create inotify descriptor: %m");
state.inotify_fd = r;
r = sd_event_add_io(event, &state.inotify_event_source, state.inotify_fd,
EPOLLIN, inotify_handler, &state);
if (r < 0) {
log_error_errno(r, "Failed to create notify event source: %m");
goto finish;
}
if (r < 0)
return log_error_errno(r, "Failed to create notify event source: %m");
r = inotify_add_watch(state.inotify_fd, "/run/systemd/", IN_CREATE);
if (r < 0) {
log_error_errno(errno, "Failed to watch /run/systemd/: %m");
goto finish;
}
if (r < 0)
return log_error_errno(errno, "Failed to watch /run/systemd/: %m");
state.run_systemd_wd = r;
(void) update_notify_run_systemd_timesync(&state);
@ -257,7 +246,7 @@ int main(int argc, char * argv[]) {
if (state.adjtime_state == TIME_ERROR)
log_info("Exit without adjtimex synchronized.");
finish:
clock_state_release(&state);
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
return r;
}
DEFINE_MAIN_FUNCTION(run);