summaryrefslogtreecommitdiffstats
path: root/hid.c
diff options
context:
space:
mode:
Diffstat (limited to 'hid.c')
-rw-r--r--hid.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/hid.c b/hid.c
index 5671a66..b9b5c9d 100644
--- a/hid.c
+++ b/hid.c
@@ -4,6 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <libkmod.h>
#include "libsysfs.h"
#include "libldetect.h"
@@ -79,7 +80,7 @@ static void add_entry(struct hid_entries *entry_list, char *name, char *module)
}
}
-static void parse_device(struct hid_entries *entries, const char *dev)
+static void parse_device(struct kmod_ctx *ctx, struct hid_entries *entries, const char *dev)
{
char keyfile[SYSFS_PATH_MAX];
char *modalias;
@@ -111,12 +112,11 @@ static void parse_device(struct hid_entries *entries, const char *dev)
else
device_name = strdup("HID Device");
- modname = modalias_resolve_module(modalias);
+ modname = modalias_resolve_module(ctx, modalias);
free(modalias);
DEBUG("%s: module name is [%s]\n", HID_BUS_NAME, modname);
if (modname != NULL)
add_entry(entries, device_name, modname);
- modalias_cleanup();
}
@@ -125,6 +125,7 @@ struct hid_entries hid_probe(void)
DIR *dir;
struct dirent *dent;
struct hid_entries entry_list = {NULL, 0};
+ struct kmod_ctx *ctx = modalias_init();
dir = opendir(sysfs_hid_path);
if (dir == NULL)
@@ -134,10 +135,11 @@ struct hid_entries hid_probe(void)
if (dent->d_name[0] == '.')
continue;
DEBUG("%s: device found %s\n", HID_BUS_NAME, dent->d_name);
- parse_device(&entry_list, dent->d_name);
+ parse_device(ctx, &entry_list, dent->d_name);
}
end_probe:
+ modalias_cleanup(ctx);
if (dir)
closedir(dir);