summaryrefslogtreecommitdiff
path: root/modules/chanserv/main
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2017-04-06 12:22:52 -0400
committerAdam <Adam@anope.org>2017-04-06 12:22:52 -0400
commit72bb1b14d372fa6065af77e8b98e8aab5295fe23 (patch)
treed0e426a88a64b67ba832fcd4648ec1d6f198fc42 /modules/chanserv/main
parent7f5cb607af73a4134a158a14006bdc3e202d0a34 (diff)
Fix access comparison operators
Diffstat (limited to 'modules/chanserv/main')
-rw-r--r--modules/chanserv/main/chanaccess.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/modules/chanserv/main/chanaccess.cpp b/modules/chanserv/main/chanaccess.cpp
index f2b170989..bc2778bc3 100644
--- a/modules/chanserv/main/chanaccess.cpp
+++ b/modules/chanserv/main/chanaccess.cpp
@@ -110,3 +110,23 @@ bool ChanAccessImpl::Matches(const User *u, NickServ::Account *acc)
return false;
}
+
+int ChanAccessImpl::Compare(ChanAccess *other)
+{
+ const std::vector<ChanServ::Privilege> &privs = ChanServ::service->GetPrivileges();
+ for (unsigned int i = privs.size(); i > 0; --i)
+ {
+ bool this_p = this->HasPriv(privs[i - 1].name),
+ other_p = other->HasPriv(privs[i - 1].name);
+
+ if (!this_p && !other_p)
+ continue;
+
+ if (this_p && !other_p)
+ return 1;
+ else if (!this_p && other_p)
+ return -1;
+ }
+
+ return 0;
+}