diff options
Diffstat (limited to 'libmodprobe/libmodprobe.cpp')
-rw-r--r-- | libmodprobe/libmodprobe.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libmodprobe/libmodprobe.cpp b/libmodprobe/libmodprobe.cpp index 354ec7bce..010624240 100644 --- a/libmodprobe/libmodprobe.cpp +++ b/libmodprobe/libmodprobe.cpp @@ -363,3 +363,16 @@ bool Modprobe::Remove(const std::string& module_name) { } return true; } + +std::vector<std::string> Modprobe::ListModules(const std::string& pattern) { + std::vector<std::string> rv; + for (const auto& [module, deps] : module_deps_) { + // Attempt to match both the canonical module name and the module filename. + if (!fnmatch(pattern.c_str(), module.c_str(), 0)) { + rv.emplace_back(module); + } else if (!fnmatch(pattern.c_str(), basename(deps[0].c_str()), 0)) { + rv.emplace_back(deps[0]); + } + } + return rv; +} |