From 50ba447bff315e916aa39ee91e2ddedee8efd035 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Wed, 27 Feb 2008 17:24:43 +0000 Subject: extract set_modules_from_modalias() --- pciusb.c | 69 +++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/pciusb.c b/pciusb.c index 25fe8b7..ba89f1c 100644 --- a/pciusb.c +++ b/pciusb.c @@ -18,6 +18,39 @@ static struct module_blacklist *blacklist = NULL; static const char *config = NULL; static char *aliasfilename; +static char *aliasdefault; + +void set_modules_from_modalias(struct pciusb_entry *e, char *modalias) { + /* Returns the resolved alias, options */ + read_toplevel_config(config, modalias, 0, + 0, &modoptions, &commands, &aliases, &blacklist); + + if (!aliases) { + /* We only use canned aliases as last resort. */ + char *alias_filelist[] = { + "/lib/module-init-tools/ldetect-lst-modules.alias", + aliasdefault, + table_name_to_file("dkms-modules.alias"), + NULL, + }; + char **alias_file = alias_filelist; + while (!aliases && *alias_file) { + read_config(*alias_file, modalias, 0, + 0, &modoptions, &commands, + &aliases, &blacklist); + aliases = apply_blacklist(aliases, blacklist); + alias_file++; + } + } + if (aliases) { + // take the last one because we find eg: generic/ata_generic/sata_sil + while (aliases->next) + aliases = aliases->next; + ifree(e->module); + e->module = strdup(aliases->module); + aliases = NULL; + } +} static char *find_modalias(const char *bus, struct pciusb_entry *e) { char *modalias = NULL; @@ -47,7 +80,6 @@ static char *find_modalias(const char *bus, struct pciusb_entry *e) { static void find_modules_through_aliases(const char *bus, struct pciusb_entries *entries) { unsigned int i; char *dirname; - char *aliasdefault; char *fallback_aliases = table_name_to_file("fallback-modules.alias"); struct stat st_alias, st_fallback; @@ -70,38 +102,9 @@ static void find_modules_through_aliases(const char *bus, struct pciusb_entries continue; char *modalias = find_modalias(bus, e); - if (!modalias) - continue; - - /* Returns the resolved alias, options */ - read_toplevel_config(config, modalias, 0, - 0, &modoptions, &commands, &aliases, &blacklist); - - if (!aliases) { - /* We only use canned aliases as last resort. */ - char *alias_filelist[] = { - "/lib/module-init-tools/ldetect-lst-modules.alias", - aliasdefault, - table_name_to_file("dkms-modules.alias"), - NULL, - }; - char **alias_file = alias_filelist; - while (!aliases && *alias_file) { - read_config(*alias_file, modalias, 0, - 0, &modoptions, &commands, - &aliases, &blacklist); - aliases = apply_blacklist(aliases, blacklist); - alias_file++; - } - } - if (aliases) { - // take the last one because we find eg: generic/ata_generic/sata_sil - while (aliases->next) - aliases = aliases->next; - ifree(e->module); - e->module = strdup(aliases->module); - aliases = NULL; - } + if (modalias) { + set_modules_from_modalias(e, modalias); + } } free(aliasfilename); free(dirname); -- cgit v1.2.1