diff options
Diffstat (limited to 'hid.c')
-rw-r--r-- | hid.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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); |