]> jfr.im git - solanum.git/blobdiff - extensions/extb_oper.c
m_echotags: Oops...
[solanum.git] / extensions / extb_oper.c
index 083b587b9433139ebe6e0a6777ed66dc0b7071d2..0b257332020804c33043d0370ad4c13ca89b4e2b 100644 (file)
@@ -1,8 +1,6 @@
 /*
  * Oper extban type: matches opers
  * -- jilles
- *
- * $Id: extb_oper.c 1299 2006-05-11 15:43:03Z jilles $
  */
 
 #include "stdinc.h"
@@ -40,8 +38,14 @@ static int eb_oper(const char *data, struct Client *client_p,
        (void)mode_type;
 
        if (data != NULL)
-               return IsOper(client_p) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+       {
+               struct PrivilegeSet *set = privilegeset_get(data);
+               if (set != NULL && client_p->localClient->privset == set)
+                       return EXTBAN_MATCH;
 
-       /* $o:admin or whatever */
-       return HasPrivilege(client_p, data) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+               /* $o:admin or whatever */
+               return HasPrivilege(client_p, data) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+       }
+
+       return IsOper(client_p) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
 }