From ec77abb9188ff8e09e54dba5f530ed045a25b2a2 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Fri, 23 Dec 2011 23:21:09 -0200 Subject: [PATCH] kmod-depmod: dump modules.alias.bin --- tools/kmod-depmod.c | 50 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c index cb55204b..cfa423c0 100644 --- a/tools/kmod-depmod.c +++ b/tools/kmod-depmod.c @@ -2290,6 +2290,54 @@ static int output_aliases(struct depmod *depmod, FILE *out) return 0; } +static int output_aliases_bin(struct depmod *depmod, FILE *out) +{ + char buf[1024]; + struct index_node *idx; + size_t i; + + if (out == stdout) + return 0; + + idx = index_create(); + if (idx == NULL) + return -ENOMEM; + + for (i = 0; i < depmod->modules.count; i++) { + const struct mod *mod = depmod->modules.array[i]; + struct kmod_list *l, *list = NULL; + int r = kmod_module_get_info(mod->kmod, &list); + if (r < 0 || list == NULL) + continue; + kmod_list_foreach(l, list) { + const char *key = kmod_module_info_get_key(l); + const char *value = kmod_module_info_get_value(l); + const char *modname, *alias; + int duplicate; + + if (!streq(key, "alias")) + continue; + + alias = underscores(value, buf, sizeof(buf)); + if (alias == NULL) + continue; + + modname = kmod_module_get_name(mod->kmod); + duplicate = index_insert(idx, alias, modname, + mod->idx); + if (duplicate && depmod->cfg->warn_dups) + WRN("duplicate module alias:\n%s %s\n", + alias, modname); + } + kmod_module_info_free_list(list); + } + + index_write(idx, out); + index_destroy(idx); + + return 0; +} + static int output_softdeps(struct depmod *depmod, FILE *out) { size_t i; @@ -2486,7 +2534,7 @@ static int depmod_output(struct depmod *depmod, FILE *out) {"modules.dep", output_deps}, //{"modules.dep.bin", output_deps_bin}, {"modules.alias", output_aliases}, - //{"modules.alias.bin", output_aliases_bin}, + {"modules.alias.bin", output_aliases_bin}, {"modules.softdep", output_softdeps}, {"modules.symbols", output_symbols}, {"modules.symbols.bin", output_symbols_bin}, -- 2.47.2