From: Gustavo Sverzut Barbieri Date: Sat, 24 Dec 2011 01:19:22 +0000 (-0200) Subject: kmod-depmod: dump modules.builtin.bin X-Git-Tag: v3~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b144e5fb46f79ad13605b9944b3956ddeced31f;p=thirdparty%2Fkmod.git kmod-depmod: dump modules.builtin.bin --- diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c index 5b6f9473..400a2ec2 100644 --- a/tools/kmod-depmod.c +++ b/tools/kmod-depmod.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "libkmod.h" #define streq(a, b) (strcmp(a, b) == 0) @@ -2341,6 +2342,47 @@ static int output_symbols(struct depmod *depmod, FILE *out) return 0; } +static int output_builtin_bin(struct depmod *depmod, FILE *out) +{ + FILE *in; + struct index_node *idx; + char infile[PATH_MAX], line[PATH_MAX], modname[NAME_MAX]; + + if (out == stdout) + return 0; + + snprintf(infile, sizeof(infile), "%s/modules.builtin", + depmod->cfg->dirname); + in = fopen(infile, "r"); + if (in == NULL) { + int err = -errno; + ERR("Could not open %s: %m\n", infile); + return err; + } + + idx = index_create(); + if (idx == NULL) { + fclose(in); + return -ENOMEM; + } + + while (fgets(line, sizeof(line), in) != NULL) { + if (!isalpha(line[0])) { + ERR("Invalid modules.builtin line: %s\n", line); + continue; + } + + path_to_modname(line, modname, NULL); + index_insert(idx, modname, "", 0); + } + + index_write(idx, out); + index_destroy(idx); + fclose(in); + + return 0; +} + static int output_devname(struct depmod *depmod, FILE *out) { size_t i; @@ -2407,7 +2449,7 @@ static int depmod_output(struct depmod *depmod, FILE *out) {"modules.softdep", output_softdeps}, {"modules.symbols", output_symbols}, //{"modules.symbols.bin", output_symbols_bin}, - //{"modules.builtin.bin", output_builtin_bin}, + {"modules.builtin.bin", output_builtin_bin}, {"modules.devname", output_devname}, {NULL, NULL} };