diff options
author | Olivier Blin <oblin@mandriva.com> | 2008-02-27 17:55:56 +0000 |
---|---|---|
committer | Olivier Blin <oblin@mandriva.com> | 2008-02-27 17:55:56 +0000 |
commit | 9522ba1217af9c191b4f38d3b682dce78b5d3733 (patch) | |
tree | c4e200598e3383bb609da57499e4766a5e5633bb /pciusb.c | |
parent | 491fa9b96402a0eb079e848cbb676edd95116291 (diff) | |
download | ldetect-9522ba1217af9c191b4f38d3b682dce78b5d3733.tar ldetect-9522ba1217af9c191b4f38d3b682dce78b5d3733.tar.gz ldetect-9522ba1217af9c191b4f38d3b682dce78b5d3733.tar.bz2 ldetect-9522ba1217af9c191b4f38d3b682dce78b5d3733.tar.xz ldetect-9522ba1217af9c191b4f38d3b682dce78b5d3733.zip |
extract set_modules_from_modalias_file (bus-independant)
Diffstat (limited to 'pciusb.c')
-rw-r--r-- | pciusb.c | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -35,7 +35,7 @@ static void set_default_alias_file(void) { } } -static void set_modules_from_modalias(struct pciusb_entry *e, char *modalias) { +static void resolve_and_set_modules_from_modalias(struct pciusb_entry *e, char *modalias) { struct module_command *commands = NULL; struct module_options *modoptions = NULL; struct module_alias *aliases = NULL; @@ -72,14 +72,11 @@ static void set_modules_from_modalias(struct pciusb_entry *e, char *modalias) { } } -static void find_modules_through_aliases_one(const char *bus, struct pciusb_entry *e) { - char *modalias = NULL; - char *modalias_path; +static void set_modules_from_modalias_file(struct pciusb_entry *e, char *modalias_path) { FILE *file; - asprintf(&modalias_path, "/sys/bus/pci/devices/%04x:%02x:%02x.%x/modalias", e->pci_domain, e->pci_bus, e->pci_device, e->pci_function); file = fopen(modalias_path, "r"); - free(modalias_path); if (file) { + char *modalias = NULL; size_t n, size; if (-1 == getline(&modalias, &n, file)) { fprintf(stderr, "Unable to read modalias from %s\n", modalias_path); @@ -91,7 +88,7 @@ static void find_modules_through_aliases_one(const char *bus, struct pciusb_entr if (size) modalias[size-1] = 0; - set_modules_from_modalias(e, modalias); + resolve_and_set_modules_from_modalias(e, modalias); free(modalias); } else { fprintf(stderr, "Unable to read modalias from %s\n", modalias_path); @@ -99,6 +96,15 @@ static void find_modules_through_aliases_one(const char *bus, struct pciusb_entr } } +static void find_modules_through_aliases_one(const char *bus, struct pciusb_entry *e) { + char *modalias_path; + asprintf(&modalias_path, + "/sys/bus/pci/devices/%04x:%02x:%02x.%x/modalias", + e->pci_domain, e->pci_bus, e->pci_device, e->pci_function); + set_modules_from_modalias_file(e, modalias_path); + free(modalias_path); +} + static void find_modules_through_aliases(const char *bus, struct pciusb_entries *entries) { set_default_alias_file(); |