int main(int argc, char *argv[]) { int r, k; struct kmod_ctx *ctx; r = parse_argv(argc, argv); if (r <= 0) return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); umask(0022); if (parse_proc_cmdline(parse_proc_cmdline_item) < 0) return EXIT_FAILURE; ctx = kmod_new(NULL, NULL); if (!ctx) { log_error("Failed to allocate memory for kmod."); goto finish; } kmod_load_resources(ctx); kmod_set_log_fn(ctx, systemd_kmod_log, NULL); r = 0; if (argc > optind) { int i; for (i = optind; i < argc; i++) { k = apply_file(ctx, argv[i], false); if (k < 0 && r == 0) r = k; } } else { _cleanup_free_ char **files = NULL; char **fn, **i; STRV_FOREACH(i, arg_proc_cmdline_modules) { k = load_module(ctx, *i); if (k < 0 && r == 0) r = k; } k = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (k < 0) { log_error("Failed to enumerate modules-load.d files: %s", strerror(-k)); if (r == 0) r = k; goto finish; } STRV_FOREACH(fn, files) { k = apply_file(ctx, *fn, true); if (k < 0 && r == 0) r = k; }
/* Parse each config file in the specified directories. */ int config_parse_many(const char *conf_file, const char *conf_file_dirs, const char *sections, ConfigItemLookup lookup, const void *table, bool relaxed, void *userdata) { _cleanup_strv_free_ char **files = NULL; char **fn; int r; r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) return r; if (conf_file) { r = config_parse(NULL, conf_file, NULL, sections, lookup, table, relaxed, false, true, userdata); if (r < 0) return r; } STRV_FOREACH(fn, files) { r = config_parse(NULL, *fn, NULL, sections, lookup, table, relaxed, false, true, userdata); if (r < 0) return r; }
int main(int argc, char *argv[]) { int r, k; r = parse_argv(argc, argv); if (r <= 0) return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); umask(0022); r = 0; if (argc > optind) { int i; for (i = optind; i < argc; i++) { k = apply_file(argv[i], false); if (k < 0 && r == 0) r = k; } } else { _cleanup_strv_free_ char **files = NULL; char **f; r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) { log_error("Failed to enumerate binfmt.d files: %s", strerror(-r)); goto finish; } /* Flush out all rules */ write_string_file("/proc/sys/fs/binfmt_misc/status", "-1"); STRV_FOREACH(f, files) { k = apply_file(*f, true); if (k < 0 && r == 0) r = k; } }