various small fixes & example dev config
[ircu2.10.12-pk.git] / ircd / client.c
index b4d3afe8b3da73f304f7517c5e28dfe4a53286da..16367d15af183655ecc2a65a37da4ed9d41db0e5 100644 (file)
@@ -265,18 +265,18 @@ client_report_privs(struct Client *to, struct Client *client)
   return 0;
 }
 
-int client_get_privs(struct Client* client) {
-  int privs = cli_privs(client);
-
-  // add privs from class
-  struct SLink *list;
-
-  for (list = cli_confs(cptr); list != NULL; list = list->next) {
+int client_get_priv(struct Client* client, enum Priv priv) {
+  struct Privs *privs = &cli_privs(client);
+  struct SLink* list;
+  if(FlagHas(privs, priv))
+    return 1;
+  
+  for (list = cli_confs(client); list != NULL; list = list->next) {
     struct ConfItem *aconf;
     aconf = list->value.aconf;
-    if (aconf->status & CONF_CLIENT)
-      privs |= aconf->privs;
+    if (FlagHas(&aconf->privs, priv))
+      return 1;
   }
-  return privs;
+  return 0;
 }