summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/channels.c19
-rw-r--r--src/core/nicklist.c13
-rw-r--r--src/core/nicklist.h6
3 files changed, 24 insertions, 14 deletions
diff --git a/src/core/channels.c b/src/core/channels.c
index d1c6f66f..9e18654e 100644
--- a/src/core/channels.c
+++ b/src/core/channels.c
@@ -188,16 +188,15 @@ void channel_send_autocommands(CHANNEL_REC *channel)
for (bot = bots; *bot != NULL; bot++) {
const char *botnick = *bot;
- nick = nicklist_find(channel,
- channel->server->isnickflag(*botnick) ?
- botnick+1 : botnick);
- if (nick == NULL ||
- !match_nick_flags(channel->server, nick, *botnick))
- continue;
-
- /* got one! */
- eval_special_string(rec->autosendcmd, nick->nick, channel->server, channel);
- break;
+ nick = nicklist_find_mask(channel,
+ channel->server->isnickflag(*botnick) ?
+ botnick+1 : botnick);
+ if (nick != NULL &&
+ match_nick_flags(channel->server, nick, *botnick)) {
+ eval_special_string(rec->autosendcmd, nick->nick,
+ channel->server, channel);
+ break;
+ }
}
g_strfreev(bots);
}
diff --git a/src/core/nicklist.c b/src/core/nicklist.c
index fe2a2842..4014afc1 100644
--- a/src/core/nicklist.c
+++ b/src/core/nicklist.c
@@ -156,8 +156,17 @@ GSList *nicklist_find_multiple(CHANNEL_REC *channel, const char *mask)
return nicks;
}
-/* Find nick record from list */
-NICK_REC *nicklist_find(CHANNEL_REC *channel, const char *mask)
+/* Find nick */
+NICK_REC *nicklist_find(CHANNEL_REC *channel, const char *nick)
+{
+ g_return_val_if_fail(IS_CHANNEL(channel), NULL);
+ g_return_val_if_fail(nick != NULL, NULL);
+
+ return g_hash_table_lookup(channel->nicks, nick);
+}
+
+/* Find nick mask, wildcards allowed */
+NICK_REC *nicklist_find_mask(CHANNEL_REC *channel, const char *mask)
{
NICK_REC *nickrec;
char *nick, *host;
diff --git a/src/core/nicklist.h b/src/core/nicklist.h
index 0fde8bc6..46604feb 100644
--- a/src/core/nicklist.h
+++ b/src/core/nicklist.h
@@ -23,8 +23,10 @@ void nicklist_remove(CHANNEL_REC *channel, NICK_REC *nick);
void nicklist_rename(SERVER_REC *server, const char *old_nick,
const char *new_nick);
-/* Find nick record from list */
-NICK_REC *nicklist_find(CHANNEL_REC *channel, const char *mask);
+/* Find nick */
+NICK_REC *nicklist_find(CHANNEL_REC *channel, const char *nick);
+/* Find nick mask, wildcards allowed */
+NICK_REC *nicklist_find_mask(CHANNEL_REC *channel, const char *mask);
/* Get list of nicks that match the mask */
GSList *nicklist_find_multiple(CHANNEL_REC *channel, const char *mask);
/* Get list of nicks */