From: Lucas De Marchi Date: Mon, 5 Dec 2011 22:28:13 +0000 (-0200) Subject: kmod_module: get path on demand X-Git-Tag: v1~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5e7b1f7efd64c5baf6eecbac9b68a8447552f5b;p=thirdparty%2Fkmod.git kmod_module: get path on demand --- diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index 74e8d22a..152d8f64 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -377,9 +377,26 @@ KMOD_EXPORT const char *kmod_module_get_name(const struct kmod_module *mod) return mod->name; } +/* + * Relative paths are relative to dirname. Absolute paths are only used when + * user created kmod_module by giving a path + */ KMOD_EXPORT const char *kmod_module_get_path(const struct kmod_module *mod) { - // FIXME calculate path if path == NULL + if (!mod->init.dep) { + /* lazy init */ + char *line = kmod_search_moddep(mod->ctx, mod->name); + + if (line == NULL) + return NULL; + + kmod_module_parse_depline((struct kmod_module *) mod, line); + free(line); + + if (!mod->init.dep) + return NULL; + } + return mod->path; }