mirror of
https://github.com/irssi/irssi.git
synced 2025-04-26 04:51:11 -05:00
add ignore check, emphasis and fix a memory leak
This commit is contained in:
parent
7e694fd223
commit
145d1040ac
@ -67,13 +67,14 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* received msg to all ops in channel */
|
/* received msg to all ops in channel.
|
||||||
|
TODO: this code is a duplication of sig_message_public */
|
||||||
static void sig_message_irc_op_public(SERVER_REC *server, const char *msg,
|
static void sig_message_irc_op_public(SERVER_REC *server, const char *msg,
|
||||||
const char *nick, const char *address,
|
const char *nick, const char *address,
|
||||||
const char *target)
|
const char *target)
|
||||||
{
|
{
|
||||||
CHANNEL_REC *chanrec;
|
CHANNEL_REC *chanrec;
|
||||||
char *nickmode, *optarget, *prefix, *color;
|
char *nickmode, *optarget, *prefix, *color, *freemsg = NULL;
|
||||||
const char *cleantarget;
|
const char *cleantarget;
|
||||||
int for_me, level;
|
int for_me, level;
|
||||||
HILIGHT_REC *hilight;
|
HILIGHT_REC *hilight;
|
||||||
@ -86,26 +87,33 @@ static void sig_message_irc_op_public(SERVER_REC *server, const char *msg,
|
|||||||
/* and clean the rest here */
|
/* and clean the rest here */
|
||||||
cleantarget = get_visible_target(IRC_SERVER(server), cleantarget);
|
cleantarget = get_visible_target(IRC_SERVER(server), cleantarget);
|
||||||
|
|
||||||
nickmode = channel_get_nickmode(channel_find(server, cleantarget),
|
if (ignore_check_plus(server, nick, address, cleantarget, msg, &level, TRUE)) {
|
||||||
nick);
|
g_free(prefix);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
chanrec = channel_find(server, cleantarget);
|
||||||
|
|
||||||
|
nickmode = channel_get_nickmode(chanrec, nick);
|
||||||
|
|
||||||
optarget = g_strconcat(prefix, cleantarget, NULL);
|
optarget = g_strconcat(prefix, cleantarget, NULL);
|
||||||
|
|
||||||
chanrec = channel_find(server, target);
|
|
||||||
|
|
||||||
/* Check for hilights */
|
/* Check for hilights */
|
||||||
for_me = !settings_get_bool("hilight_nick_matches") ? FALSE :
|
for_me = !settings_get_bool("hilight_nick_matches") ? FALSE :
|
||||||
!settings_get_bool("hilight_nick_matches_everywhere") ?
|
!settings_get_bool("hilight_nick_matches_everywhere") ?
|
||||||
nick_match_msg(chanrec, msg, server->nick) :
|
nick_match_msg(chanrec, msg, server->nick) :
|
||||||
nick_match_msg_everywhere(chanrec, msg, server->nick);
|
nick_match_msg_everywhere(chanrec, msg, server->nick);
|
||||||
hilight = for_me ? NULL :
|
hilight = for_me ? NULL :
|
||||||
hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg);
|
hilight_match_nick(server, cleantarget, nick, address, MSGLEVEL_PUBLIC, msg);
|
||||||
color = (hilight == NULL) ? NULL : hilight_get_color(hilight);
|
color = (hilight == NULL) ? NULL : hilight_get_color(hilight);
|
||||||
|
|
||||||
level = MSGLEVEL_PUBLIC;
|
level = MSGLEVEL_PUBLIC;
|
||||||
if (for_me)
|
if (for_me)
|
||||||
level |= MSGLEVEL_HILIGHT;
|
level |= MSGLEVEL_HILIGHT;
|
||||||
|
|
||||||
|
if (settings_get_bool("emphasis"))
|
||||||
|
msg = freemsg = expand_emphasis((WI_ITEM_REC *) chanrec, msg);
|
||||||
|
|
||||||
if (color != NULL) {
|
if (color != NULL) {
|
||||||
format_create_dest(&dest, server, cleantarget, level, NULL);
|
format_create_dest(&dest, server, cleantarget, level, NULL);
|
||||||
dest.address = address;
|
dest.address = address;
|
||||||
@ -119,7 +127,10 @@ static void sig_message_irc_op_public(SERVER_REC *server, const char *msg,
|
|||||||
for_me ? TXT_PUBMSG_ME_CHANNEL : TXT_PUBMSG_CHANNEL,
|
for_me ? TXT_PUBMSG_ME_CHANNEL : TXT_PUBMSG_CHANNEL,
|
||||||
nick, optarget, msg, nickmode);
|
nick, optarget, msg, nickmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free(nickmode);
|
g_free(nickmode);
|
||||||
|
g_free(freemsg);
|
||||||
|
g_free(color);
|
||||||
g_free(optarget);
|
g_free(optarget);
|
||||||
g_free(prefix);
|
g_free(prefix);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user