diff options
author | Timo Sirainen <cras@irssi.org> | 2001-01-28 01:45:31 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2001-01-28 01:45:31 +0000 |
commit | 4cbabe2a83541fec27679cfd23fb460af279c84e (patch) | |
tree | a7edea79e06a7e91016c5d9a0701b5b2bf970ef4 /src/core | |
parent | db03c25952ba36c42bf9b74ccbc980bd3212ad2d (diff) | |
download | irssi-4cbabe2a83541fec27679cfd23fb460af279c84e.zip |
nicklist_find() now finds only full nicks, nicklist_find_mask() finds
nick masks. This fixes *a* and similiar emphasis where irssi tried to
find nick mask *a* instead of nick *a*.
Also, emphasis with highascii didn't work unless emphasis_multiword was
set ON.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1143 dbcabf3a-b0e7-0310-adc4-f8d773084564
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 */ |