From 9522ba1217af9c191b4f38d3b682dce78b5d3733 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Wed, 27 Feb 2008 17:55:56 +0000 Subject: extract set_modules_from_modalias_file (bus-independant) --- pciusb.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'pciusb.c') diff --git a/pciusb.c b/pciusb.c index 07a6c66..66d0eb5 100644 --- a/pciusb.c +++ b/pciusb.c @@ -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(); -- cgit v1.2.1