summaryrefslogtreecommitdiff
path: root/src/login/inhibit.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-11-16 14:37:13 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-11-17 09:13:35 +0100
commitb453c447e0fb4a1e9eccd42120731c1700220b21 (patch)
tree85e4c728676022a3a4bc096ed6c5e226b24a6ea8 /src/login/inhibit.c
parent634a0ad3e59c0fe2a6ea440938fcf8058916667f (diff)
downloadsystemd-b453c447e0fb4a1e9eccd42120731c1700220b21.tar.gz
inhibit: define main through macro
Diffstat (limited to 'src/login/inhibit.c')
-rw-r--r--src/login/inhibit.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/src/login/inhibit.c b/src/login/inhibit.c
index 22fee49a2b..ca24aea5a7 100644
--- a/src/login/inhibit.c
+++ b/src/login/inhibit.c
@@ -266,7 +266,7 @@ static int parse_argv(int argc, char *argv[]) {
return 1;
}
-int main(int argc, char *argv[]) {
+static int run(int argc, char *argv[]) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
int r;
@@ -274,23 +274,17 @@ int main(int argc, char *argv[]) {
log_open();
r = parse_argv(argc, argv);
- if (r < 0)
- return EXIT_FAILURE;
- if (r == 0)
- return EXIT_SUCCESS;
+ if (r <= 0)
+ return r;
r = sd_bus_default_system(&bus);
- if (r < 0) {
- log_error_errno(r, "Failed to connect to bus: %m");
- return EXIT_FAILURE;
- }
+ if (r < 0)
+ return log_error_errno(r, "Failed to connect to bus: %m");
if (arg_action == ACTION_LIST) {
-
r = print_inhibitors(bus);
pager_close();
- if (r < 0)
- return EXIT_FAILURE;
+ return r;
} else {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -308,14 +302,12 @@ int main(int argc, char *argv[]) {
arg_mode = "block";
fd = inhibit(bus, &error);
- if (fd < 0) {
- log_error("Failed to inhibit: %s", bus_error_message(&error, fd));
- return EXIT_FAILURE;
- }
+ if (fd < 0)
+ return log_error("Failed to inhibit: %s", bus_error_message(&error, fd));
r = safe_fork("(inhibit)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_LOG, &pid);
if (r < 0)
- return EXIT_FAILURE;
+ return r;
if (r == 0) {
/* Child */
execvp(argv[optind], argv + optind);
@@ -324,9 +316,8 @@ int main(int argc, char *argv[]) {
_exit(EXIT_FAILURE);
}
- r = wait_for_terminate_and_check(argv[optind], pid, WAIT_LOG);
- return r < 0 ? EXIT_FAILURE : r;
+ return wait_for_terminate_and_check(argv[optind], pid, WAIT_LOG);
}
-
- return EXIT_SUCCESS;
}
+
+DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(run);