m_stats: add optional constraint checking function pointer to stats_l_list().
This commit is contained in:
parent
55a06c8910
commit
e82bda18a5
1 changed files with 10 additions and 8 deletions
|
@ -70,7 +70,8 @@ DECLARE_MODULE_AV1(stats, NULL, NULL, stats_clist, stats_hlist, NULL, "$Revision
|
||||||
|
|
||||||
const char *Lformat = "%s %u %u %u %u %u :%u %u %s";
|
const char *Lformat = "%s %u %u %u %u %u :%u %u %s";
|
||||||
|
|
||||||
static void stats_l_list(struct Client *s, const char *, int, int, rb_dlink_list *, char);
|
static void stats_l_list(struct Client *s, const char *, int, int, rb_dlink_list *, char,
|
||||||
|
int (*check_fn)(struct Client *target_p));
|
||||||
static void stats_l_client(struct Client *source_p, struct Client *target_p,
|
static void stats_l_client(struct Client *source_p, struct Client *target_p,
|
||||||
char statchar);
|
char statchar);
|
||||||
|
|
||||||
|
@ -1537,8 +1538,8 @@ stats_ltrace(struct Client *source_p, int parc, const char *parv[])
|
||||||
/* local opers get everyone */
|
/* local opers get everyone */
|
||||||
if(MyOper(source_p))
|
if(MyOper(source_p))
|
||||||
{
|
{
|
||||||
stats_l_list(source_p, name, doall, wilds, &unknown_list, statchar);
|
stats_l_list(source_p, name, doall, wilds, &unknown_list, statchar, NULL);
|
||||||
stats_l_list(source_p, name, doall, wilds, &lclient_list, statchar);
|
stats_l_list(source_p, name, doall, wilds, &lclient_list, statchar, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1546,12 +1547,12 @@ stats_ltrace(struct Client *source_p, int parc, const char *parv[])
|
||||||
if(MyClient(source_p))
|
if(MyClient(source_p))
|
||||||
stats_l_client(source_p, source_p, statchar);
|
stats_l_client(source_p, source_p, statchar);
|
||||||
|
|
||||||
stats_l_list(source_p, name, doall, wilds, &local_oper_list, statchar);
|
stats_l_list(source_p, name, doall, wilds, &local_oper_list, statchar, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ConfigServerHide.flatten_links || IsOper(source_p) ||
|
if (!ConfigServerHide.flatten_links || IsOper(source_p) ||
|
||||||
IsExemptShide(source_p))
|
IsExemptShide(source_p))
|
||||||
stats_l_list(source_p, name, doall, wilds, &serv_list, statchar);
|
stats_l_list(source_p, name, doall, wilds, &serv_list, statchar, NULL);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1559,7 +1560,7 @@ stats_ltrace(struct Client *source_p, int parc, const char *parv[])
|
||||||
/* ok, at this point theyre looking for a specific client whos on
|
/* ok, at this point theyre looking for a specific client whos on
|
||||||
* our server.. but it contains a wildcard. --fl
|
* our server.. but it contains a wildcard. --fl
|
||||||
*/
|
*/
|
||||||
stats_l_list(source_p, name, doall, wilds, &lclient_list, statchar);
|
stats_l_list(source_p, name, doall, wilds, &lclient_list, statchar, NULL);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1567,7 +1568,7 @@ stats_ltrace(struct Client *source_p, int parc, const char *parv[])
|
||||||
|
|
||||||
static void
|
static void
|
||||||
stats_l_list(struct Client *source_p, const char *name, int doall, int wilds,
|
stats_l_list(struct Client *source_p, const char *name, int doall, int wilds,
|
||||||
rb_dlink_list * list, char statchar)
|
rb_dlink_list * list, char statchar, int (*check_fn)(struct Client *target_p))
|
||||||
{
|
{
|
||||||
rb_dlink_node *ptr;
|
rb_dlink_node *ptr;
|
||||||
struct Client *target_p;
|
struct Client *target_p;
|
||||||
|
@ -1583,7 +1584,8 @@ stats_l_list(struct Client *source_p, const char *name, int doall, int wilds,
|
||||||
if(!doall && wilds && !match(name, target_p->name))
|
if(!doall && wilds && !match(name, target_p->name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
stats_l_client(source_p, target_p, statchar);
|
if (check_fn == NULL || check_fn(target_p))
|
||||||
|
stats_l_client(source_p, target_p, statchar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue