summaryrefslogtreecommitdiffstats
path: root/pciusb.c
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2008-02-27 17:55:56 +0000
committerOlivier Blin <oblin@mandriva.com>2008-02-27 17:55:56 +0000
commit9522ba1217af9c191b4f38d3b682dce78b5d3733 (patch)
treec4e200598e3383bb609da57499e4766a5e5633bb /pciusb.c
parent491fa9b96402a0eb079e848cbb676edd95116291 (diff)
downloadldetect-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.c20
1 files changed, 13 insertions, 7 deletions
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();