return ping;
}
+/*
+ * client_get_default_umode
+ * returns default usermode in attached client connection class
+ */
+const char* client_get_default_umode(const struct Client* sptr)
+{
+ struct ConfItem* aconf;
+ struct SLink* link;
+
+ assert(cli_verify(sptr));
+
+ for (link = cli_confs(sptr); link; link = link->next) {
+ aconf = link->value.aconf;
+ if ((aconf->status & CONF_CLIENT) && ConfUmode(aconf))
+ return ConfUmode(aconf);
+ }
+ return NULL;
+}
+
/*
* client_drop_sendq
* removes the client's connection from the list of connections with
}
}
+enum FeatureFlag {
+ FEATFLAG_NULL,
+ FEATFLAG_DISABLES_PRIV,
+ FEATFLAG_ENABLES_PRIV,
+ FEATFLAG_GLOBAL_OPERS,
+ FEATFLAG_LOCAL_OPERS,
+ FEATFLAG_ALL_OPERS
+};
+
static struct
{
enum Priv priv;
- enum
- {
- FEATFLAG_DISABLES_PRIV,
- FEATFLAG_ENABLES_PRIV,
- FEATFLAG_GLOBAL_OPERS,
- FEATFLAG_LOCAL_OPERS,
- FEATFLAG_ALL_OPERS
- } flag;
enum Feature feat;
+ enum FeatureFlag flag;
} feattab[] =
{
{ PRIV_WHOX, FEAT_LAST_F, FEATFLAG_ALL_OPERS },
{ PRIV_SEE_CHAN, FEAT_LOCOP_SEE_IN_SECRET_CHANNELS, FEATFLAG_LOCAL_OPERS },
{ PRIV_WIDE_GLINE, FEAT_LOCOP_WIDE_GLINE, FEATFLAG_LOCAL_OPERS },
- { PRIV_LAST_PRIV, FEAT_LAST_F, 0 }
+ { PRIV_LAST_PRIV, FEAT_LAST_F, FEATFLAG_NULL }
};
/* client_set_privs(struct Client* client)
{
if (PrivHas(&oper->privs_dirty, feattab[i].priv))
continue;
- if (feattab[i].feat != FEAT_LAST_F && !feature_bool(feattab[i].priv))
+ if (feattab[i].feat != FEAT_LAST_F && !feature_bool(feattab[i].feat))
continue;
switch (feattab[i].flag)
{
if (IsLocOp(client))
PrivSet(&cli_privs(client), feattab[i].priv);
continue;
+ default:
+ continue; /* ?? */
}
}