summary refs log tree commit diff
diff options
context:
space:
mode:
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) {
mit/ui-shared.c?h=1.3.0&id=e23f63461f17aeb770d47d9c3134414e549d1f0e&follow=1'>ui-shared: fix broken sizeof in title setting and rewriteJason A. Donenfeld 2018-12-09git: update to v2.20.0Christian Hesse 2018-11-25ui-blame: set repo for sbJason A. Donenfeld 2018-11-25auth-filter: pass url with query string attachedJason A. Donenfeld 2018-11-21git: use xz compressed archive for downloadChristian Hesse 2018-10-12git: update to v2.19.1Christian Hesse 2018-09-11ui-ssdiff: ban strcat()Christian Hesse 2018-09-11ui-ssdiff: ban strncpy()Christian Hesse 2018-09-11ui-shared: ban strcat()Christian Hesse 2018-09-11ui-patch: ban sprintf()Christian Hesse 2018-09-11ui-log: ban strncpy()Christian Hesse 2018-09-11ui-log: ban strcpy()Christian Hesse 2018-09-11parsing: ban sprintf()Christian Hesse 2018-09-11parsing: ban strncpy()Christian Hesse 2018-08-28filters: generate anchor links from markdownChristian Hesse 2018-08-03Bump version.Jason A. Donenfeld 2018-08-03clone: fix directory traversalJason A. Donenfeld 2018-08-03config: record repo.snapshot-prefix in the per-repo configKonstantin Ryabitsev