X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fmodules-load%2Fmodules-load.c;h=c3aa4094467abcf37c8996015f8864dc580516b5;hp=01987f2e3c2a2f84df6da2d4e5faa64c10dbcec4;hb=4b462d1a28461b302586b117736ef288fba1012f;hpb=e3e45d4f82daa5cd85ba40dde9127df900096c0c diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index 01987f2e3..c3aa40944 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -57,7 +57,6 @@ static void systemd_kmod_log(void *data, int priority, const char *file, int lin #pragma GCC diagnostic pop static int add_modules(const char *p) { - char **t; _cleanup_strv_free_ char **k = NULL; k = strv_split(p, ","); @@ -70,39 +69,19 @@ static int add_modules(const char *p) { return 0; } -static int parse_proc_cmdline(void) { - _cleanup_free_ char *line = NULL; - char *w, *state; - size_t l; +static int parse_proc_cmdline_word(const char *word) { int r; - r = proc_cmdline(&line); - if (r < 0) - log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); - if (r <= 0) - return 0; - - FOREACH_WORD_QUOTED(w, l, line, state) { - _cleanup_free_ char *word; - - word = strndup(w, l); - if (!word) - return log_oom(); + if (startswith(word, "modules-load=")) { + r = add_modules(word + 13); + if (r < 0) + return r; - if (startswith(word, "modules-load=")) { - - r = add_modules(word + 13); + } else if (startswith(word, "rd.modules-load=")) { + if (in_initrd()) { + r = add_modules(word + 16); if (r < 0) return r; - - } else if (startswith(word, "rd.modules-load=")) { - - if (in_initrd()) { - r = add_modules(word + 16); - if (r < 0) - return r; - } - } } @@ -274,7 +253,7 @@ int main(int argc, char *argv[]) { umask(0022); - if (parse_proc_cmdline() < 0) + if (parse_proc_cmdline(parse_proc_cmdline_word) < 0) return EXIT_FAILURE; ctx = kmod_new(NULL, NULL); @@ -307,9 +286,11 @@ int main(int argc, char *argv[]) { r = k; } - r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); - if (r < 0) { - log_error("Failed to enumerate modules-load.d files: %s", strerror(-r)); + 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; }