From 372b79b59e961f07699b6c9a1d03ae7ca1c11ea3 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 13 Aug 2018 14:37:37 -0400 Subject: Detect pings anywhere in message --- handle.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/handle.c b/handle.c index 80ed1b4..22a4723 100644 --- a/handle.c +++ b/handle.c @@ -14,6 +14,7 @@ * along with this program. If not, see . */ +#include #include #include #include @@ -86,6 +87,20 @@ static bool isSelf(const char *nick, const char *user) { return false; } +static bool isPing(const char *mesg) { + size_t len = strlen(self.nick); + const char *match = mesg; + while (NULL != (match = strcasestr(match, self.nick))) { + char b = (match > mesg ? *(match - 1) : ' '); + char a = (match[len] ? match[len] : ' '); + match = &match[len]; + if (!isspace(b) && !ispunct(b)) continue; + if (!isspace(a) && !ispunct(a)) continue; + return true; + } + return false; +} + typedef void (*Handler)(char *prefix, char *params); static void handlePing(char *prefix, char *params) { @@ -292,13 +307,12 @@ static void handlePrivmsg(char *prefix, char *params) { } if (!isSelf(nick, user)) tabTouch(tag, nick); urlScan(tag, mesg); - bool ping = !strncasecmp(mesg, self.nick, strlen(self.nick)); bool self = isSelf(nick, user); + bool ping = isPing(mesg); uiFmt( tag, "%c\3%d%c%s%c\17 %s", ping["\17\26"], color(user), self["<("], nick, self[">)"], mesg ); - // TODO: always be beeping. } static void handleNotice(char *prefix, char *params) { -- cgit 1.4.0 >diff
Commit message (Expand)Author
2020-02-12Add 378 to list of WHOIS responsesJune McEnroe
2020-02-13Implement source address selectionmultiplexd
2020-02-12Add /listJune McEnroe
2020-02-12Simplify transpose swapJune McEnroe
2020-02-12Add C-t transposeJune McEnroe
2020-02-12Add C-v and M-vJune McEnroe
2020-02-12Allow for arguments to open/copy utilitiesJune McEnroe
2020-02-12Handle RPL_AWAYJune McEnroe
2020-02-11Support monochromatic terminalsJune McEnroe
2020-02-11Add .gz to chroot-man scriptJune McEnroe
2020-02-11Add -R restricted flagJune McEnroe
2020-02-11Add chroot targetJune McEnroe
2020-02-11Exit focus and paste modes on err exitJune McEnroe
2020-02-11Add startup GPLv3 note and URLJune McEnroe
2020-02-11Make sure -D_GNU_SOURCE ends up in CFLAGS on LinuxJune McEnroe
2020-02-11Add note about setting PKG_CONFIG_PATHJune McEnroe
2020-02-11Rename query ID on nick changeJune McEnroe
2020-02-11Call completeClear when closing a windowJune McEnroe
2020-02-11Don't insert color codes for non-mentionsJune McEnroe
2020-02-11Take first two words in colorMentionsJune McEnroe
2020-02-11Use time_t for save signatureJune McEnroe
2020-02-11Set self.nick to * initiallyJune McEnroe
2020-02-11Define ColorCap instead of hardcoding 100June McEnroe
2020-02-11Move hash to top of chat.hJune McEnroe
2020-02-11Move base64 out of chat.hJune McEnroe
2020-02-11Move XDG_SUBDIR out of chat.hJune McEnroe
2020-02-11Fix whois idle unit calculationJune McEnroe
2020-02-11Cast towupper to wchar_tJune McEnroe
2020-02-11Cast set but unused variables to voidJune McEnroe
2020-02-11Declare strlcatJune McEnroe
2020-02-11Check if VDSUSP existsJune McEnroe
2020-02-11Fix completeReplace iterationJune McEnroe
2020-02-11Use pkg(8) to configure on FreeBSDJune McEnroe
2020-02-11Remove legacy codeJune McEnroe
2020-02-11Add INSTALLING section to READMEJune McEnroe