diff options
author | Olivier Blin <oblin@mandriva.com> | 2008-02-27 17:24:43 +0000 |
---|---|---|
committer | Olivier Blin <oblin@mandriva.com> | 2008-02-27 17:24:43 +0000 |
commit | 50ba447bff315e916aa39ee91e2ddedee8efd035 (patch) | |
tree | b36d6cf79a1f2beb778a78f5481e19d3928eba1c /pciusb.c | |
parent | e45c2f35a963ce2e206476fad08e870a4dece8ec (diff) | |
download | ldetect-50ba447bff315e916aa39ee91e2ddedee8efd035.tar ldetect-50ba447bff315e916aa39ee91e2ddedee8efd035.tar.gz ldetect-50ba447bff315e916aa39ee91e2ddedee8efd035.tar.bz2 ldetect-50ba447bff315e916aa39ee91e2ddedee8efd035.tar.xz ldetect-50ba447bff315e916aa39ee91e2ddedee8efd035.zip |
extract set_modules_from_modalias()
Diffstat (limited to 'pciusb.c')
-rw-r--r-- | pciusb.c | 69 |
1 files changed, 36 insertions, 33 deletions
@@ -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); |