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) {
-02-20Remove unused mbs.len field from struct EditJune McEnroe 2022-02-19Remove unneeded includes in ui.cJune McEnroe 2022-02-19Reimplement tab completeJune McEnroe 2022-02-19Handle errors from editFn, etc.June McEnroe 2022-02-19Reimplement text macrosJune McEnroe 2022-02-19Factor out input handling to input.cJune McEnroe 2022-02-19Factor out window management to window.cJune McEnroe 2022-02-19Enable -Wmissing-prototypesJune McEnroe 2022-02-19Fix edit.[ch] license notice additional permissionsJune McEnroe 2022-02-19Run line editing testsJune McEnroe 2022-02-18Implement new line editing "library"June McEnroe 2022-02-18Simplify cursor positioning in inputJune McEnroe 2022-02-18Fix M-f orderingJune McEnroe 2022-02-12Move sandman build to scripts/MakefileJune McEnroe 2022-02-12Use compat_readpassphrase.c on LinuxJune McEnroe 2022-02-12Copy RPP defines from oconfigureJune McEnroe