about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-08-13 14:37:37 -0400
committerJune McEnroe <june@causal.agency>2018-08-13 14:37:37 -0400
commit372b79b59e961f07699b6c9a1d03ae7ca1c11ea3 (patch)
tree944ece448e14b6c32262285f5e91e8da1aee3712
parentAdd /query, /part and /close (diff)
downloadcatgirl-372b79b59e961f07699b6c9a1d03ae7ca1c11ea3.tar.gz
catgirl-372b79b59e961f07699b6c9a1d03ae7ca1c11ea3.zip
Detect pings anywhere in message
Diffstat (limited to '')
-rw-r--r--handle.c18
1 files 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 <http://www.gnu.org/licenses/>.
  */
 
+#include <ctype.h>
 #include <err.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -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) {
7d05c016&follow=1'>Use hilex for bin HTMLJune McEnroe 2021-01-12Don't output a pre in hilex by defaultJune McEnroe 2021-01-12Move hilex out of hilex directoryJune McEnroe 2021-01-12Consolidate hilex formatters into hilex.cJune McEnroe 2021-01-12Remove hacky tagging from hilexJune McEnroe God that makes the lexers so much simpler. 2021-01-12Add htagml -iJune McEnroe 2021-01-12Render tag index in HTMLJune McEnroe 2021-01-12Add htagml -xJune McEnroe 2021-01-12Prevent matching the same tag twiceJune McEnroe 2021-01-12Process htagml file line by lineJune McEnroe This simplifies some things, adds support for line number tag definitions, and should enable combining htagml with other preprocessors in the future. 2021-01-12Split fields by tab onlyJune McEnroe Also don't fail hard on non-forward-search definitions. 2021-01-12List both Makefile and html.sh under README.7June McEnroe 2021-01-12Add htagml exampleJune McEnroe 2021-01-12Use mandoc and htagml for bin htmlJune McEnroe 2021-01-12Add htagmlJune McEnroe 2021-01-12Replace causal.agency with a simple mdoc pageJune McEnroe 2021-01-11Publish "Using vi"June McEnroe 2021-01-11Enable diff.colorMovedJune McEnroe 2021-01-10Set less search case-insensitiveJune McEnroe 2021-01-10Set EXINITJune McEnroe neovim is laggy as hell in my OpenBSD VM, so I switched to vi so I could type without getting frustrated. 2021-01-09Add c -t flag to print expression typeJune McEnroe Also add missing float case. 2021-01-05Update taglineJune McEnroe