mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
correctly separate ignore flags (no_act, hidden) from level
This commit is contained in:
parent
7f14d4d744
commit
b9a274a81d
@ -82,17 +82,12 @@ static int ignore_match_pattern(IGNORE_REC *rec, const char *text)
|
|||||||
* However we also want to allow NO_ACT combined with levels, so mask it out and
|
* However we also want to allow NO_ACT combined with levels, so mask it out and
|
||||||
* match levels if set. */
|
* match levels if set. */
|
||||||
#define FLAG_MSGLEVELS ( MSGLEVEL_NO_ACT | MSGLEVEL_HIDDEN )
|
#define FLAG_MSGLEVELS ( MSGLEVEL_NO_ACT | MSGLEVEL_HIDDEN )
|
||||||
static int ignore_match_level(IGNORE_REC *rec, int level)
|
static int ignore_match_level(IGNORE_REC *rec, int level, int flags)
|
||||||
{
|
{
|
||||||
if (level & FLAG_MSGLEVELS) {
|
level &= ~FLAG_MSGLEVELS;
|
||||||
int flaglevel = level & FLAG_MSGLEVELS;
|
flags &= FLAG_MSGLEVELS;
|
||||||
int msglevel = level & ~FLAG_MSGLEVELS;
|
|
||||||
return (msglevel & rec->level) && (flaglevel & rec->level);
|
return ((flags & rec->level) == flags) && ((level & rec->level) != 0);
|
||||||
} else if (!(rec->level & FLAG_MSGLEVELS)) {
|
|
||||||
return (level & rec->level);
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ignore_match_nickmask(rec, nick, nickmask) \
|
#define ignore_match_nickmask(rec, nick, nickmask) \
|
||||||
@ -109,7 +104,7 @@ static int ignore_match_level(IGNORE_REC *rec, int level)
|
|||||||
((rec)->channels == NULL || ((channel) != NULL && \
|
((rec)->channels == NULL || ((channel) != NULL && \
|
||||||
strarray_find((rec)->channels, (channel)) != -1))
|
strarray_find((rec)->channels, (channel)) != -1))
|
||||||
|
|
||||||
static int ignore_check_replies(CHANNEL_REC *chanrec, const char *text, int level)
|
static int ignore_check_replies(CHANNEL_REC *chanrec, const char *text, int level, int flags)
|
||||||
{
|
{
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
|
|
||||||
@ -121,7 +116,7 @@ static int ignore_check_replies(CHANNEL_REC *chanrec, const char *text, int leve
|
|||||||
IGNORE_REC *rec = tmp->data;
|
IGNORE_REC *rec = tmp->data;
|
||||||
|
|
||||||
if (rec->mask != NULL && rec->replies &&
|
if (rec->mask != NULL && rec->replies &&
|
||||||
ignore_match_level(rec, level) &&
|
ignore_match_level(rec, level, flags) &&
|
||||||
ignore_match_channel(rec, chanrec->name) &&
|
ignore_match_channel(rec, chanrec->name) &&
|
||||||
ignore_check_replies_rec(rec, chanrec, text))
|
ignore_check_replies_rec(rec, chanrec, text))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -130,8 +125,8 @@ static int ignore_check_replies(CHANNEL_REC *chanrec, const char *text, int leve
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ignore_check(SERVER_REC *server, const char *nick, const char *host,
|
int ignore_check_flags(SERVER_REC *server, const char *nick, const char *host,
|
||||||
const char *channel, const char *text, int level)
|
const char *channel, const char *text, int level, int flags)
|
||||||
{
|
{
|
||||||
CHANNEL_REC *chanrec;
|
CHANNEL_REC *chanrec;
|
||||||
NICK_REC *nickrec;
|
NICK_REC *nickrec;
|
||||||
@ -167,7 +162,7 @@ int ignore_check(SERVER_REC *server, const char *nick, const char *host,
|
|||||||
ignore_match_channel(rec, channel) &&
|
ignore_match_channel(rec, channel) &&
|
||||||
ignore_match_nickmask(rec, nick, nickmask);
|
ignore_match_nickmask(rec, nick, nickmask);
|
||||||
if (match &&
|
if (match &&
|
||||||
ignore_match_level(rec, level) &&
|
ignore_match_level(rec, level, flags) &&
|
||||||
ignore_match_pattern(rec, text)) {
|
ignore_match_pattern(rec, text)) {
|
||||||
len = rec->mask == NULL ? 0 : strlen(rec->mask);
|
len = rec->mask == NULL ? 0 : strlen(rec->mask);
|
||||||
if (len > best_mask) {
|
if (len > best_mask) {
|
||||||
@ -188,7 +183,12 @@ int ignore_check(SERVER_REC *server, const char *nick, const char *host,
|
|||||||
if (best_match || (level & MSGLEVEL_PUBLIC) == 0)
|
if (best_match || (level & MSGLEVEL_PUBLIC) == 0)
|
||||||
return best_match;
|
return best_match;
|
||||||
|
|
||||||
return ignore_check_replies(chanrec, text, level);
|
return ignore_check_replies(chanrec, text, level, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ignore_check(SERVER_REC *server, const char *nick, const char *host,
|
||||||
|
const char *channel, const char *text, int level) {
|
||||||
|
return ignore_check_flags(server, nick, host, channel, text, level, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
IGNORE_REC *ignore_find_full(const char *servertag, const char *mask, const char *pattern,
|
IGNORE_REC *ignore_find_full(const char *servertag, const char *mask, const char *pattern,
|
||||||
|
@ -25,6 +25,8 @@ extern GSList *ignores;
|
|||||||
|
|
||||||
int ignore_check(SERVER_REC *server, const char *nick, const char *host,
|
int ignore_check(SERVER_REC *server, const char *nick, const char *host,
|
||||||
const char *channel, const char *text, int level);
|
const char *channel, const char *text, int level);
|
||||||
|
int ignore_check_flags(SERVER_REC *server, const char *nick, const char *host,
|
||||||
|
const char *channel, const char *text, int level, int flags);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
IGNORE_FIND_PATTERN = 0x01, /* Match the pattern */
|
IGNORE_FIND_PATTERN = 0x01, /* Match the pattern */
|
||||||
|
@ -201,10 +201,10 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
|||||||
if (for_me)
|
if (for_me)
|
||||||
level |= MSGLEVEL_HILIGHT;
|
level |= MSGLEVEL_HILIGHT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, target, msg, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, target, msg, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, target, msg, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, target, msg, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
if (settings_get_bool("emphasis"))
|
if (settings_get_bool("emphasis"))
|
||||||
@ -263,10 +263,10 @@ static void sig_message_private(SERVER_REC *server, const char *msg,
|
|||||||
if (settings_get_bool("emphasis"))
|
if (settings_get_bool("emphasis"))
|
||||||
msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg);
|
msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg);
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, NULL, msg, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, NULL, msg, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, NULL, msg, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, NULL, msg, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
if (own) {
|
if (own) {
|
||||||
@ -361,10 +361,10 @@ static void sig_message_join(SERVER_REC *server, const char *channel,
|
|||||||
{
|
{
|
||||||
int level = MSGLEVEL_JOINS;
|
int level = MSGLEVEL_JOINS;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, channel, NULL, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, channel, NULL, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, channel, NULL, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, channel, NULL, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level,
|
||||||
@ -377,10 +377,10 @@ static void sig_message_part(SERVER_REC *server, const char *channel,
|
|||||||
{
|
{
|
||||||
int level = MSGLEVEL_PARTS;
|
int level = MSGLEVEL_PARTS;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, channel, NULL, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, channel, NULL, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, channel, NULL, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, channel, NULL, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level,
|
||||||
@ -399,10 +399,10 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
if (ignore_check(server, nick, address, NULL, reason, MSGLEVEL_QUITS))
|
if (ignore_check(server, nick, address, NULL, reason, MSGLEVEL_QUITS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, NULL, reason, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, NULL, reason, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, NULL, reason, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, NULL, reason, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
print_channel = NULL;
|
print_channel = NULL;
|
||||||
@ -424,10 +424,10 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, rec->visible_name, reason, MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, rec->visible_name, reason, MSGLEVEL_QUITS, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, rec->visible_name, reason, MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, rec->visible_name, reason, MSGLEVEL_QUITS, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
if (print_channel == NULL ||
|
if (print_channel == NULL ||
|
||||||
@ -476,10 +476,10 @@ static void sig_message_kick(SERVER_REC *server, const char *channel,
|
|||||||
{
|
{
|
||||||
int level = MSGLEVEL_KICKS;
|
int level = MSGLEVEL_KICKS;
|
||||||
|
|
||||||
if (ignore_check(server, kicker, address, channel, reason, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, kicker, address, channel, reason, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, kicker, address, channel, reason, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, kicker, address, channel, reason, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level,
|
||||||
@ -500,10 +500,10 @@ static void print_nick_change_channel(SERVER_REC *server, const char *channel,
|
|||||||
level = MSGLEVEL_NICKS;
|
level = MSGLEVEL_NICKS;
|
||||||
if (ownnick) level |= MSGLEVEL_NO_ACT;
|
if (ownnick) level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (!(level & MSGLEVEL_NO_ACT) && ignore_check(server, oldnick, address, channel, newnick, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, oldnick, address, channel, newnick, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (!(level & MSGLEVEL_HIDDEN) && ignore_check(server, oldnick, address, channel, newnick, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, oldnick, address, channel, newnick, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level,
|
||||||
@ -582,10 +582,10 @@ static void sig_message_topic(SERVER_REC *server, const char *channel,
|
|||||||
{
|
{
|
||||||
int level = MSGLEVEL_TOPICS;
|
int level = MSGLEVEL_TOPICS;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, channel, topic, level | MSGLEVEL_NO_ACT))
|
if (ignore_check_flags(server, nick, address, channel, topic, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address, channel, topic, level | MSGLEVEL_HIDDEN))
|
if (ignore_check_flags(server, nick, address, channel, topic, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
printformat(server, channel, level,
|
printformat(server, channel, level,
|
||||||
|
@ -92,12 +92,12 @@ static void sig_message_dcc(CHAT_DCC_REC *dcc, const char *msg)
|
|||||||
tag = g_strconcat("=", dcc->id, NULL);
|
tag = g_strconcat("=", dcc->id, NULL);
|
||||||
query = query_find(NULL, tag);
|
query = query_find(NULL, tag);
|
||||||
|
|
||||||
if (ignore_check(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
if (ignore_check_flags(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
||||||
level | MSGLEVEL_NO_ACT))
|
level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
if (ignore_check_flags(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
||||||
level | MSGLEVEL_HIDDEN))
|
level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
format_create_dest_tag(&dest, dcc->server, dcc->servertag, tag,
|
format_create_dest_tag(&dest, dcc->server, dcc->servertag, tag,
|
||||||
@ -118,12 +118,12 @@ static void sig_message_dcc_action(CHAT_DCC_REC *dcc, const char *msg)
|
|||||||
tag = g_strconcat("=", dcc->id, NULL);
|
tag = g_strconcat("=", dcc->id, NULL);
|
||||||
query = query_find(NULL, tag);
|
query = query_find(NULL, tag);
|
||||||
|
|
||||||
if (ignore_check(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
if (ignore_check_flags(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
||||||
level | MSGLEVEL_NO_ACT))
|
level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
if (ignore_check_flags(SERVER(dcc->server), tag, dcc->addrstr, NULL, msg,
|
||||||
level | MSGLEVEL_HIDDEN))
|
level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
format_create_dest_tag(&dest, dcc->server, dcc->servertag, tag,
|
format_create_dest_tag(&dest, dcc->server, dcc->servertag, tag,
|
||||||
@ -143,12 +143,12 @@ static void sig_message_dcc_ctcp(CHAT_DCC_REC *dcc, const char *cmd,
|
|||||||
|
|
||||||
tag = g_strconcat("=", dcc->id, NULL);
|
tag = g_strconcat("=", dcc->id, NULL);
|
||||||
|
|
||||||
if (ignore_check(SERVER(dcc->server), tag, dcc->addrstr, NULL, cmd,
|
if (ignore_check_flags(SERVER(dcc->server), tag, dcc->addrstr, NULL, cmd,
|
||||||
level | MSGLEVEL_NO_ACT))
|
level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(SERVER(dcc->server), tag, dcc->addrstr, NULL, cmd,
|
if (ignore_check_flags(SERVER(dcc->server), tag, dcc->addrstr, NULL, cmd,
|
||||||
level | MSGLEVEL_HIDDEN))
|
level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
format_create_dest_tag(&dest, dcc->server, dcc->servertag, tag,
|
format_create_dest_tag(&dest, dcc->server, dcc->servertag, tag,
|
||||||
|
@ -158,12 +158,12 @@ static void sig_message_irc_action(IRC_SERVER_REC *server, const char *msg,
|
|||||||
if (ignore_check(SERVER(server), nick, address, target, msg, level))
|
if (ignore_check(SERVER(server), nick, address, target, msg, level))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ignore_check(SERVER(server), nick, address, target, msg,
|
if (ignore_check_flags(SERVER(server), nick, address, target, msg,
|
||||||
level | MSGLEVEL_NO_ACT))
|
level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(SERVER(server), nick, address, target, msg,
|
if (ignore_check_flags(SERVER(server), nick, address, target, msg,
|
||||||
level | MSGLEVEL_HIDDEN))
|
level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
if (server_ischannel(SERVER(server), target)) {
|
if (server_ischannel(SERVER(server), target)) {
|
||||||
@ -240,14 +240,14 @@ static void sig_message_irc_notice(SERVER_REC *server, const char *msg,
|
|||||||
msg, level))
|
msg, level))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address,
|
if (ignore_check_flags(server, nick, address,
|
||||||
server_ischannel(SERVER(server), target) ? target : NULL,
|
server_ischannel(SERVER(server), target) ? target : NULL,
|
||||||
msg, level | MSGLEVEL_NO_ACT))
|
msg, level, MSGLEVEL_NO_ACT))
|
||||||
level |= MSGLEVEL_NO_ACT;
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
if (ignore_check(server, nick, address,
|
if (ignore_check_flags(server, nick, address,
|
||||||
server_ischannel(SERVER(server), target) ? target : NULL,
|
server_ischannel(SERVER(server), target) ? target : NULL,
|
||||||
msg, level | MSGLEVEL_HIDDEN))
|
msg, level, MSGLEVEL_HIDDEN))
|
||||||
level |= MSGLEVEL_HIDDEN;
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
if (server_ischannel(SERVER(server), target)) {
|
if (server_ischannel(SERVER(server), target)) {
|
||||||
|
@ -162,19 +162,29 @@ static void sig_message_mode(IRC_SERVER_REC *server, const char *channel,
|
|||||||
const char *nick, const char *addr,
|
const char *nick, const char *addr,
|
||||||
const char *mode)
|
const char *mode)
|
||||||
{
|
{
|
||||||
|
int level = MSGLEVEL_MODES;
|
||||||
|
|
||||||
if (nick == NULL) nick = server->real_address;
|
if (nick == NULL) nick = server->real_address;
|
||||||
|
|
||||||
if (ignore_check(SERVER(server), nick, addr, channel,
|
if (ignore_check(SERVER(server), nick, addr, channel,
|
||||||
mode, MSGLEVEL_MODES))
|
mode, MSGLEVEL_MODES))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (ignore_check_flags(SERVER(server), nick, addr, channel,
|
||||||
|
mode, MSGLEVEL_MODES, MSGLEVEL_NO_ACT))
|
||||||
|
level |= MSGLEVEL_NO_ACT;
|
||||||
|
|
||||||
|
if (ignore_check_flags(SERVER(server), nick, addr, channel,
|
||||||
|
mode, MSGLEVEL_MODES, MSGLEVEL_HIDDEN))
|
||||||
|
level |= MSGLEVEL_HIDDEN;
|
||||||
|
|
||||||
if (!server_ischannel(SERVER(server), channel)) {
|
if (!server_ischannel(SERVER(server), channel)) {
|
||||||
/* user mode change */
|
/* user mode change */
|
||||||
printformat(server, NULL, MSGLEVEL_MODES,
|
printformat(server, NULL, level,
|
||||||
IRCTXT_USERMODE_CHANGE, mode, channel);
|
IRCTXT_USERMODE_CHANGE, mode, channel);
|
||||||
} else if (addr == NULL) {
|
} else if (addr == NULL) {
|
||||||
/* channel mode changed by server */
|
/* channel mode changed by server */
|
||||||
printformat(server, channel, MSGLEVEL_MODES,
|
printformat(server, channel, level,
|
||||||
IRCTXT_SERVER_CHANMODE_CHANGE,
|
IRCTXT_SERVER_CHANMODE_CHANGE,
|
||||||
channel, mode, nick);
|
channel, mode, nick);
|
||||||
} else {
|
} else {
|
||||||
@ -187,7 +197,7 @@ static void sig_message_mode(IRC_SERVER_REC *server, const char *channel,
|
|||||||
if (chanrec != NULL && g_ascii_strcasecmp(nick, server->nick) != 0)
|
if (chanrec != NULL && g_ascii_strcasecmp(nick, server->nick) != 0)
|
||||||
msg_multi_mode(chanrec, nick, addr, mode);
|
msg_multi_mode(chanrec, nick, addr, mode);
|
||||||
else {
|
else {
|
||||||
printformat(server, channel, MSGLEVEL_MODES,
|
printformat(server, channel, level,
|
||||||
IRCTXT_CHANMODE_CHANGE,
|
IRCTXT_CHANMODE_CHANGE,
|
||||||
channel, mode, nick, addr);
|
channel, mode, nick, addr);
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,19 @@ CODE:
|
|||||||
OUTPUT:
|
OUTPUT:
|
||||||
RETVAL
|
RETVAL
|
||||||
|
|
||||||
|
int
|
||||||
|
ignore_check_flags(nick, host, channel, text, level, flags)
|
||||||
|
char *nick
|
||||||
|
char *host
|
||||||
|
char *channel
|
||||||
|
char *text
|
||||||
|
int level
|
||||||
|
int flags
|
||||||
|
CODE:
|
||||||
|
RETVAL = ignore_check_flags(NULL, nick, host, channel, text, level, flags);
|
||||||
|
OUTPUT:
|
||||||
|
RETVAL
|
||||||
|
|
||||||
#*******************************
|
#*******************************
|
||||||
MODULE = Irssi::Ignore PACKAGE = Irssi::Server
|
MODULE = Irssi::Ignore PACKAGE = Irssi::Server
|
||||||
#*******************************
|
#*******************************
|
||||||
@ -38,6 +51,16 @@ ignore_check(server, nick, host, channel, text, level)
|
|||||||
char *text
|
char *text
|
||||||
int level
|
int level
|
||||||
|
|
||||||
|
int
|
||||||
|
ignore_check_flags(server, nick, host, channel, text, level, flags)
|
||||||
|
Irssi::Server server
|
||||||
|
char *nick
|
||||||
|
char *host
|
||||||
|
char *channel
|
||||||
|
char *text
|
||||||
|
int level
|
||||||
|
int flags
|
||||||
|
|
||||||
#*******************************
|
#*******************************
|
||||||
MODULE = Irssi::Ignore PACKAGE = Irssi::Ignore PREFIX = ignore_
|
MODULE = Irssi::Ignore PACKAGE = Irssi::Ignore PREFIX = ignore_
|
||||||
#*******************************
|
#*******************************
|
||||||
|
Loading…
Reference in New Issue
Block a user