diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/channels.c | 19 | ||||
-rw-r--r-- | src/core/nicklist.c | 13 | ||||
-rw-r--r-- | src/core/nicklist.h | 6 |
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 */ |