summaryrefslogtreecommitdiffstats
path: root/pciusb.c
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2008-02-27 17:24:43 +0000
committerOlivier Blin <oblin@mandriva.com>2008-02-27 17:24:43 +0000
commit50ba447bff315e916aa39ee91e2ddedee8efd035 (patch)
treeb36d6cf79a1f2beb778a78f5481e19d3928eba1c /pciusb.c
parente45c2f35a963ce2e206476fad08e870a4dece8ec (diff)
downloadldetect-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.c69
1 files 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);