diff options
author | michael <michael@82007160-df01-0410-b94d-b575c5fd34c7> | 2014-01-23 19:03:09 +0000 |
---|---|---|
committer | michael <michael@82007160-df01-0410-b94d-b575c5fd34c7> | 2014-01-23 19:03:09 +0000 |
commit | 78d9d3a0b00c8e0f16963a0cc90fb0acc66e575d (patch) | |
tree | 695799bb20a66b6d6459bec15759b4c456e13ce1 /modules | |
parent | d9c6b586dba89017c6c9b54c172f7682c179823d (diff) |
- m_names.c: a channel name parameter is now required
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@2907 82007160-df01-0410-b94d-b575c5fd34c7
Diffstat (limited to 'modules')
-rw-r--r-- | modules/m_names.c | 105 |
1 files changed, 3 insertions, 102 deletions
diff --git a/modules/m_names.c b/modules/m_names.c index fe369ad..608f9da 100644 --- a/modules/m_names.c +++ b/modules/m_names.c @@ -39,100 +39,6 @@ #include "modules.h" -/* names_all_visible_channels() - * - * inputs - pointer to client struct requesting names - * output - none - * side effects - lists all visible channels whee! - */ -static void -names_all_visible_channels(struct Client *source_p) -{ - dlink_node *ptr = NULL; - - /* - * First, do all visible channels (public and the one user self is) - */ - DLINK_FOREACH(ptr, global_channel_list.head) - /* Find users on same channel (defined by chptr) */ - channel_member_names(source_p, ptr->data, 0); -} - -/* names_non_public_non_secret() - * - * inputs - pointer to client struct requesting names - * output - none - * side effects - lists all non public non secret channels - */ -static void -names_non_public_non_secret(struct Client *source_p) -{ - int mlen, tlen, cur_len; - int reply_to_send = 0; - int dont_show = 0; - dlink_node *gc2ptr, *lp; - struct Client *c2ptr; - struct Channel *ch3ptr = NULL; - char buf[IRCD_BUFSIZE]; - char *t; - - mlen = snprintf(buf, sizeof(buf), form_str(RPL_NAMREPLY), - me.name, source_p->name, "*", "*"); - cur_len = mlen; - t = buf + mlen; - - /* Second, do all non-public, non-secret channels in one big sweep */ - DLINK_FOREACH(gc2ptr, global_client_list.head) - { - c2ptr = gc2ptr->data; - - if (!IsClient(c2ptr) || HasUMode(c2ptr, UMODE_INVISIBLE)) - continue; - - dont_show = 0; - - /* - * Don't show a client if they are on a secret channel or they - * are on a channel source_p is on since they have already - * been show earlier. -avalon - */ - DLINK_FOREACH(lp, c2ptr->channel.head) - { - ch3ptr = ((struct Membership *)lp->data)->chptr; - - if ((ch3ptr->mode.mode & (MODE_PRIVATE|MODE_SECRET)) || IsMember(source_p, ch3ptr)) - { - dont_show = 1; - break; - } - } - - if (dont_show) - continue; - - tlen = strlen(c2ptr->name); - if (cur_len + tlen + 1 > IRCD_BUFSIZE - 2) - { - sendto_one(source_p, "%s", buf); - cur_len = mlen; - t = buf + mlen; - } - - strcpy(t, c2ptr->name); - t += tlen; - - *t++ = ' '; - *t = 0; - - cur_len += tlen + 1; - - reply_to_send = 1; - } - - if (reply_to_send) - sendto_one(source_p, "%s", buf); -} - /* ** m_names ** parv[0] = sender prefix @@ -143,31 +49,26 @@ m_names(struct Client *client_p, struct Client *source_p, int parc, char *parv[]) { struct Channel *chptr = NULL; - char *s; + char *s = NULL; char *para = parc > 1 ? parv[1] : NULL; if (!EmptyString(para)) { - if ((s = strchr(para, ',')) != NULL) + if ((s = strchr(para, ','))) *s = '\0'; if (*para == '\0') return 0; - if ((chptr = hash_find_channel(para)) != NULL) + if ((chptr = hash_find_channel(para))) channel_member_names(source_p, chptr, 1); else sendto_one(source_p, form_str(RPL_ENDOFNAMES), me.name, source_p->name, para); } else - { - names_all_visible_channels(source_p); - names_non_public_non_secret(source_p); sendto_one(source_p, form_str(RPL_ENDOFNAMES), me.name, source_p->name, "*"); - } - return 0; } |