libmodprobe: add support to list modules

am: 012cfa19b0

Change-Id: I82ec8054ec1709ff18bd8d43851554a7e1625f40
This commit is contained in:
Steve Muckle 2019-08-07 10:43:36 -07:00 committed by android-build-merger
commit 4a644fa521
2 changed files with 14 additions and 0 deletions

View file

@ -29,6 +29,7 @@ class Modprobe {
bool LoadWithAliases(const std::string& module_name, bool strict,
const std::string& parameters = "");
bool Remove(const std::string& module_name);
std::vector<std::string> ListModules(const std::string& pattern);
void EnableBlacklist(bool enable);
private:

View file

@ -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;
}