* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
- * $Id: m_who.c 1853 2006-08-24 18:30:52Z jilles $
+ * $Id: m_who.c 3350 2007-04-02 22:03:08Z jilles $
*/
#include "stdinc.h"
#include "tools.h"
};
mapi_clist_av1 who_clist[] = { &who_msgtab, NULL };
-DECLARE_MODULE_AV1(who, NULL, NULL, who_clist, NULL, NULL, "$Revision: 1853 $");
+DECLARE_MODULE_AV1(who, NULL, NULL, who_clist, NULL, NULL, "$Revision: 3350 $");
static void do_who_on_channel(struct Client *source_p, struct Channel *chptr,
int server_oper, int member);
struct Client *target_p;
struct membership *msptr;
char *mask;
- dlink_node *lp;
+ rb_dlink_node *lp;
struct Channel *chptr = NULL;
int server_oper = parc > 2 ? (*parv[2] == 'o') : 0; /* Show OPERS only */
int member;
if(IsChannelName(mask))
{
/* List all users on a given channel */
- chptr = find_channel(mask);
+ chptr = find_channel(parv[1] + operspy);
if(chptr != NULL)
{
if(operspy)
do_who_on_channel(source_p, chptr, server_oper, NO);
}
sendto_one(source_p, form_str(RPL_ENDOFWHO),
- me.name, source_p->name, mask);
+ me.name, source_p->name, parv[1] + operspy);
return 0;
}
int isinvis = 0;
isinvis = IsInvisible(target_p);
- DLINK_FOREACH(lp, target_p->user->channel.head)
+ RB_DLINK_FOREACH(lp, target_p->user->channel.head)
{
msptr = lp->data;
chptr = msptr->chptr;
{
struct membership *msptr;
struct Client *target_p;
- dlink_node *ptr;
+ rb_dlink_node *ptr;
- DLINK_FOREACH(ptr, chptr->members.head)
+ RB_DLINK_FOREACH(ptr, chptr->members.head)
{
msptr = ptr->data;
target_p = msptr->client_p;
{
if((mask == NULL) ||
match(mask, target_p->name) || match(mask, target_p->username) ||
- match(mask, target_p->host) || match(mask, target_p->user->server) ||
+ match(mask, target_p->host) || match(mask, target_p->servptr->name) ||
(IsOper(source_p) && match(mask, target_p->orighost)) ||
match(mask, target_p->info))
{
{
struct membership *msptr;
struct Client *target_p;
- dlink_node *lp, *ptr;
+ rb_dlink_node *lp, *ptr;
int maxmatches = 500;
/* first, list all matching INvisible clients on common channels
*/
if(!operspy)
{
- DLINK_FOREACH(lp, source_p->user->channel.head)
+ RB_DLINK_FOREACH(lp, source_p->user->channel.head)
{
msptr = lp->data;
who_common_channel(source_p, msptr->chptr, mask, server_oper, &maxmatches);
* if this is an operspy who, list all matching clients, no need
* to clear marks
*/
- DLINK_FOREACH(ptr, global_client_list.head)
+ RB_DLINK_FOREACH(ptr, global_client_list.head)
{
target_p = ptr->data;
if(!IsPerson(target_p))
{
if(!mask ||
match(mask, target_p->name) || match(mask, target_p->username) ||
- match(mask, target_p->host) || match(mask, target_p->user->server) ||
+ match(mask, target_p->host) || match(mask, target_p->servptr->name) ||
(IsOper(source_p) && match(mask, target_p->orighost)) ||
match(mask, target_p->info))
{
{
struct Client *target_p;
struct membership *msptr;
- dlink_node *ptr;
+ rb_dlink_node *ptr;
int combine = IsCapable(source_p, CLICAP_MULTI_PREFIX);
- DLINK_FOREACH(ptr, chptr->members.head)
+ RB_DLINK_FOREACH(ptr, chptr->members.head)
{
msptr = ptr->data;
target_p = msptr->client_p;
sendto_one(source_p, form_str(RPL_WHOREPLY), me.name, source_p->name,
(chname) ? (chname) : "*",
target_p->username,
- target_p->host, target_p->user->server, target_p->name,
+ target_p->host, target_p->servptr->name, target_p->name,
status,
ConfigServerHide.flatten_links ? 0 : target_p->hopcount,
target_p->info);