main-func: make _DEFINE_MAIN_FUNC() take short function

No functional change, just refactoring.
This commit is contained in:
Yu Watanabe
2024-02-12 02:18:18 +09:00
parent 4ebf678f1f
commit 51fb0d30c7
2 changed files with 15 additions and 6 deletions
+1 -1
View File
@@ -102,4 +102,4 @@ void log_setup_generator(void);
impl(argv[1], \
argv[argc == 4 ? 2 : 1], \
argv[argc == 4 ? 3 : 1]), \
r < 0 ? EXIT_FAILURE : EXIT_SUCCESS)
exit_failure_if_negative)
+14 -5
View File
@@ -12,7 +12,7 @@
#include "spawn-polkit-agent.h"
#include "static-destruct.h"
#define _DEFINE_MAIN_FUNCTION(intro, impl, ret) \
#define _DEFINE_MAIN_FUNCTION(intro, impl, result_to_exit_status) \
int main(int argc, char *argv[]) { \
int r; \
assert_se(argc > 0 && !isempty(argv[0])); \
@@ -21,22 +21,31 @@
r = impl; \
if (r < 0) \
(void) sd_notifyf(0, "ERRNO=%i", -r); \
(void) sd_notifyf(0, "EXIT_STATUS=%i", ret); \
(void) sd_notifyf(0, "EXIT_STATUS=%i", \
result_to_exit_status(r)); \
ask_password_agent_close(); \
polkit_agent_close(); \
pager_close(); \
mac_selinux_finish(); \
static_destruct(); \
return ret; \
return result_to_exit_status(r); \
}
static inline int exit_failure_if_negative(int result) {
return result < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}
/* Negative return values from impl are mapped to EXIT_FAILURE, and
* everything else means success! */
#define DEFINE_MAIN_FUNCTION(impl) \
_DEFINE_MAIN_FUNCTION(,impl(argc, argv), r < 0 ? EXIT_FAILURE : EXIT_SUCCESS)
_DEFINE_MAIN_FUNCTION(,impl(argc, argv), exit_failure_if_negative)
static inline int exit_failure_if_nonzero(int result) {
return result < 0 ? EXIT_FAILURE : result;
}
/* Zero is mapped to EXIT_SUCCESS, negative values are mapped to EXIT_FAILURE,
* and positive values are propagated.
* Note: "true" means failure! */
#define DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(impl) \
_DEFINE_MAIN_FUNCTION(,impl(argc, argv), r < 0 ? EXIT_FAILURE : r)
_DEFINE_MAIN_FUNCTION(,impl(argc, argv), exit_failure_if_nonzero)