Check ignores against id
Otherwise they do not work correctly for QUIT and NICK. This also lets you ignore private messages only by putting the nick in the third field.weechat-hashes
parent
83a2fb0d34
commit
73bda18110
2
chat.h
2
chat.h
|
@ -269,7 +269,7 @@ extern struct Ignore {
|
||||||
} ignore;
|
} ignore;
|
||||||
const char *ignoreAdd(const char *pattern);
|
const char *ignoreAdd(const char *pattern);
|
||||||
bool ignoreRemove(const char *pattern);
|
bool ignoreRemove(const char *pattern);
|
||||||
enum Heat ignoreCheck(enum Heat heat, const struct Message *msg);
|
enum Heat ignoreCheck(enum Heat heat, uint id, const struct Message *msg);
|
||||||
|
|
||||||
extern bool logEnable;
|
extern bool logEnable;
|
||||||
void logFormat(uint id, const time_t *time, const char *format, ...)
|
void logFormat(uint id, const time_t *time, const char *format, ...)
|
||||||
|
|
17
handle.c
17
handle.c
|
@ -314,7 +314,7 @@ static void handleJoin(struct Message *msg) {
|
||||||
msg->params[2] = NULL;
|
msg->params[2] = NULL;
|
||||||
}
|
}
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck(Cold, msg), tagTime(msg),
|
id, ignoreCheck(Cold, id, msg), tagTime(msg),
|
||||||
"\3%02d%s\3\t%s%s%sarrives in \3%02d%s\3",
|
"\3%02d%s\3\t%s%s%sarrives in \3%02d%s\3",
|
||||||
hash(msg->user), msg->nick,
|
hash(msg->user), msg->nick,
|
||||||
(msg->params[2] ? "(" : ""),
|
(msg->params[2] ? "(" : ""),
|
||||||
|
@ -346,7 +346,7 @@ static void handlePart(struct Message *msg) {
|
||||||
completeRemove(id, msg->nick);
|
completeRemove(id, msg->nick);
|
||||||
urlScan(id, msg->nick, msg->params[1]);
|
urlScan(id, msg->nick, msg->params[1]);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck(Cold, msg), tagTime(msg),
|
id, ignoreCheck(Cold, id, msg), tagTime(msg),
|
||||||
"\3%02d%s\3\tleaves \3%02d%s\3%s%s",
|
"\3%02d%s\3\tleaves \3%02d%s\3%s%s",
|
||||||
hash(msg->user), msg->nick, hash(msg->params[0]), msg->params[0],
|
hash(msg->user), msg->nick, hash(msg->params[0]), msg->params[0],
|
||||||
(msg->params[1] ? ": " : ""), (msg->params[1] ?: "")
|
(msg->params[1] ? ": " : ""), (msg->params[1] ?: "")
|
||||||
|
@ -393,7 +393,7 @@ static void handleNick(struct Message *msg) {
|
||||||
set(&idNames[id], msg->params[0]);
|
set(&idNames[id], msg->params[0]);
|
||||||
}
|
}
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck(Cold, msg), tagTime(msg),
|
id, ignoreCheck(Cold, id, msg), tagTime(msg),
|
||||||
"\3%02d%s\3\tis now known as \3%02d%s\3",
|
"\3%02d%s\3\tis now known as \3%02d%s\3",
|
||||||
hash(msg->user), msg->nick, hash(msg->user), msg->params[0]
|
hash(msg->user), msg->nick, hash(msg->user), msg->params[0]
|
||||||
);
|
);
|
||||||
|
@ -411,7 +411,7 @@ static void handleQuit(struct Message *msg) {
|
||||||
for (uint id; (id = completeID(msg->nick));) {
|
for (uint id; (id = completeID(msg->nick));) {
|
||||||
urlScan(id, msg->nick, msg->params[0]);
|
urlScan(id, msg->nick, msg->params[0]);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck(Cold, msg), tagTime(msg),
|
id, ignoreCheck(Cold, id, msg), tagTime(msg),
|
||||||
"\3%02d%s\3\tleaves%s%s",
|
"\3%02d%s\3\tleaves%s%s",
|
||||||
hash(msg->user), msg->nick,
|
hash(msg->user), msg->nick,
|
||||||
(msg->params[0] ? ": " : ""), (msg->params[0] ?: "")
|
(msg->params[0] ? ": " : ""), (msg->params[0] ?: "")
|
||||||
|
@ -430,7 +430,7 @@ static void handleInvite(struct Message *msg) {
|
||||||
require(msg, true, 2);
|
require(msg, true, 2);
|
||||||
if (!strcmp(msg->params[0], self.nick)) {
|
if (!strcmp(msg->params[0], self.nick)) {
|
||||||
uiFormat(
|
uiFormat(
|
||||||
Network, ignoreCheck(Hot, msg), tagTime(msg),
|
Network, ignoreCheck(Hot, Network, msg), tagTime(msg),
|
||||||
"\3%02d%s\3\tinvites you to \3%02d%s\3",
|
"\3%02d%s\3\tinvites you to \3%02d%s\3",
|
||||||
hash(msg->user), msg->nick, hash(msg->params[1]), msg->params[1]
|
hash(msg->user), msg->nick, hash(msg->params[1]), msg->params[1]
|
||||||
);
|
);
|
||||||
|
@ -1106,12 +1106,13 @@ static void handlePrivmsg(struct Message *msg) {
|
||||||
bool mention = !mine && isMention(msg);
|
bool mention = !mine && isMention(msg);
|
||||||
if (!notice && !mine) completeTouch(id, msg->nick, hash(msg->user));
|
if (!notice && !mine) completeTouch(id, msg->nick, hash(msg->user));
|
||||||
urlScan(id, msg->nick, msg->params[1]);
|
urlScan(id, msg->nick, msg->params[1]);
|
||||||
|
enum Heat heat = ignoreCheck((mention || query ? Hot : Warm), id, msg);
|
||||||
if (notice) {
|
if (notice) {
|
||||||
if (id != Network) {
|
if (id != Network) {
|
||||||
logFormat(id, tagTime(msg), "-%s- %s", msg->nick, msg->params[1]);
|
logFormat(id, tagTime(msg), "-%s- %s", msg->nick, msg->params[1]);
|
||||||
}
|
}
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck(Warm, msg), tagTime(msg),
|
id, ignoreCheck(Warm, id, msg), tagTime(msg),
|
||||||
"\3%d-%s-\3%d\t%s",
|
"\3%d-%s-\3%d\t%s",
|
||||||
hash(msg->user), msg->nick, LightGray, msg->params[1]
|
hash(msg->user), msg->nick, LightGray, msg->params[1]
|
||||||
);
|
);
|
||||||
|
@ -1119,7 +1120,7 @@ static void handlePrivmsg(struct Message *msg) {
|
||||||
logFormat(id, tagTime(msg), "* %s %s", msg->nick, msg->params[1]);
|
logFormat(id, tagTime(msg), "* %s %s", msg->nick, msg->params[1]);
|
||||||
const char *mentions = colorMentions(id, msg);
|
const char *mentions = colorMentions(id, msg);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck((mention || query ? Hot : Warm), msg), tagTime(msg),
|
id, heat, tagTime(msg),
|
||||||
"%s\35\3%d* %s\17\35\t%s%s",
|
"%s\35\3%d* %s\17\35\t%s%s",
|
||||||
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
||||||
mentions, msg->params[1]
|
mentions, msg->params[1]
|
||||||
|
@ -1128,7 +1129,7 @@ static void handlePrivmsg(struct Message *msg) {
|
||||||
logFormat(id, tagTime(msg), "<%s> %s", msg->nick, msg->params[1]);
|
logFormat(id, tagTime(msg), "<%s> %s", msg->nick, msg->params[1]);
|
||||||
const char *mentions = colorMentions(id, msg);
|
const char *mentions = colorMentions(id, msg);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, ignoreCheck((mention || query ? Hot : Warm), msg), tagTime(msg),
|
id, heat, tagTime(msg),
|
||||||
"%s\3%d<%s>\17\t%s%s",
|
"%s\3%d<%s>\17\t%s%s",
|
||||||
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
(mention ? "\26" : ""), hash(msg->user), msg->nick,
|
||||||
mentions, msg->params[1]
|
mentions, msg->params[1]
|
||||||
|
|
4
ignore.c
4
ignore.c
|
@ -58,11 +58,11 @@ bool ignoreRemove(const char *pattern) {
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Heat ignoreCheck(enum Heat heat, const struct Message *msg) {
|
enum Heat ignoreCheck(enum Heat heat, uint id, const struct Message *msg) {
|
||||||
char match[512];
|
char match[512];
|
||||||
snprintf(
|
snprintf(
|
||||||
match, sizeof(match), "%s!%s@%s %s %s",
|
match, sizeof(match), "%s!%s@%s %s %s",
|
||||||
msg->nick, msg->user, msg->host, msg->cmd, (msg->params[0] ?: "")
|
msg->nick, msg->user, msg->host, msg->cmd, idNames[id]
|
||||||
);
|
);
|
||||||
for (size_t i = 0; i < ignore.len; ++i) {
|
for (size_t i = 0; i < ignore.len; ++i) {
|
||||||
if (fnmatch(ignore.patterns[i], match, FNM_CASEFOLD)) continue;
|
if (fnmatch(ignore.patterns[i], match, FNM_CASEFOLD)) continue;
|
||||||
|
|
Loading…
Reference in New Issue