diff options
author | Adam <Adam@anope.org> | 2011-08-17 15:56:40 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-08-17 15:56:40 -0400 |
commit | ede910d6556ce848ce942176034b00ced16976df (patch) | |
tree | 9683a7bfe113f61b61c815b7260cfcce77a1dbab /src/opertype.cpp | |
parent | 0f4c9a43b3240709d3ddbbfd8450197bd8eb9096 (diff) |
Made /os oper info also show all inherited commands/privs
Diffstat (limited to 'src/opertype.cpp')
-rw-r--r-- | src/opertype.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/opertype.cpp b/src/opertype.cpp index 9d6a4086f..5d9c666b4 100644 --- a/src/opertype.cpp +++ b/src/opertype.cpp @@ -94,13 +94,29 @@ void OperType::Inherits(OperType *ot) this->inheritances.insert(ot); } -const std::list<Anope::string> &OperType::GetCommands() const +const std::list<Anope::string> OperType::GetCommands() const { - return this->commands; + std::list<Anope::string> cmd_list = this->commands; + for (std::set<OperType *>::const_iterator it = this->inheritances.begin(), it_end = this->inheritances.end(); it != it_end; ++it) + { + OperType *ot = *it; + std::list<Anope::string> cmds = ot->GetPrivs(); + for (std::list<Anope::string>::const_iterator it2 = cmds.begin(), it2_end = cmds.end(); it2 != it2_end; ++it2) + cmd_list.push_back(*it2); + } + return cmd_list; } -const std::list<Anope::string> &OperType::GetPrivs() const +const std::list<Anope::string> OperType::GetPrivs() const { - return this->privs; + std::list<Anope::string> priv_list = this->privs; + for (std::set<OperType *>::const_iterator it = this->inheritances.begin(), it_end = this->inheritances.end(); it != it_end; ++it) + { + OperType *ot = *it; + std::list<Anope::string> priv = ot->GetPrivs(); + for (std::list<Anope::string>::const_iterator it2 = priv.begin(), it2_end = priv.end(); it2 != it2_end; ++it2) + priv_list.push_back(*it2); + } + return priv_list; } |