modules-load: use static destructor and DEFINE_MAIN_FUNCTION() macro

This commit is contained in:
Yu Watanabe 2018-11-20 18:24:47 +09:00 committed by Zbigniew Jędrzejewski-Szmek
parent f66da783fa
commit c3d6fb26ed

View file

@ -12,6 +12,7 @@
#include "fd-util.h" #include "fd-util.h"
#include "fileio.h" #include "fileio.h"
#include "log.h" #include "log.h"
#include "main-func.h"
#include "module-util.h" #include "module-util.h"
#include "pretty-print.h" #include "pretty-print.h"
#include "proc-cmdline.h" #include "proc-cmdline.h"
@ -20,9 +21,10 @@
#include "util.h" #include "util.h"
static char **arg_proc_cmdline_modules = NULL; static char **arg_proc_cmdline_modules = NULL;
static const char conf_file_dirs[] = CONF_PATHS_NULSTR("modules-load.d"); static const char conf_file_dirs[] = CONF_PATHS_NULSTR("modules-load.d");
STATIC_DESTRUCTOR_REGISTER(arg_proc_cmdline_modules, strv_freep);
static void systemd_kmod_log(void *data, int priority, const char *file, int line, static void systemd_kmod_log(void *data, int priority, const char *file, int line,
const char *fn, const char *format, va_list args) { const char *fn, const char *format, va_list args) {
@ -158,13 +160,13 @@ static int parse_argv(int argc, char *argv[]) {
return 1; return 1;
} }
int main(int argc, char *argv[]) { static int run(int argc, char *argv[]) {
int r, k;
_cleanup_(kmod_unrefp) struct kmod_ctx *ctx = NULL; _cleanup_(kmod_unrefp) struct kmod_ctx *ctx = NULL;
int r, k;
r = parse_argv(argc, argv); r = parse_argv(argc, argv);
if (r <= 0) if (r <= 0)
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; return r;
log_setup_service(); log_setup_service();
@ -177,7 +179,7 @@ int main(int argc, char *argv[]) {
ctx = kmod_new(NULL, NULL); ctx = kmod_new(NULL, NULL);
if (!ctx) { if (!ctx) {
log_error("Failed to allocate memory for kmod."); log_error("Failed to allocate memory for kmod.");
goto finish; return -ENOMEM;
} }
kmod_load_resources(ctx); kmod_load_resources(ctx);
@ -209,7 +211,7 @@ int main(int argc, char *argv[]) {
log_error_errno(k, "Failed to enumerate modules-load.d files: %m"); log_error_errno(k, "Failed to enumerate modules-load.d files: %m");
if (r == 0) if (r == 0)
r = k; r = k;
goto finish; return r;
} }
STRV_FOREACH(fn, files) { STRV_FOREACH(fn, files) {
@ -219,8 +221,7 @@ int main(int argc, char *argv[]) {
} }
} }
finish: return r;
strv_free(arg_proc_cmdline_modules);
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
} }
DEFINE_MAIN_FUNCTION(run);