]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Add server mask (/msg $*.quakenet.org) support.
authorChris Porter <redacted>
Mon, 30 Jun 2008 14:57:13 +0000 (15:57 +0100)
committerChris Porter <redacted>
Mon, 30 Jun 2008 14:57:13 +0000 (15:57 +0100)
core/hooks.h
nick/nick.c
nick/nick.h
nick/nickhandlers.c

index eb5df9fd2f81e9eb92e9edbef6354c65d4dd5958..ab62eb6964d3975f4e08062958c771fcc31fad78 100644 (file)
@@ -37,6 +37,7 @@
 #define HOOK_NICK_SETHOST          306  /* Argument is nick* */
 #define HOOK_NICK_MODEOPER         307  /* Argument is void*[2] (nick, modes) */
 #define HOOK_NICK_KILL             308  /* Argument is void*[2] (nick, reason) */
+#define HOOK_NICK_MASKPRIVMSG      309  /* Argument is void*[3] (nick, target, message) ** NICK COULD BE NULL ** */
 
 #define HOOK_CHANNEL_BURST         400  /* Argument is channel pointer */
 #define HOOK_CHANNEL_CREATE        401  /* Argument is void*[2] (channel, nick) */
index e7ecf4e19ed02ba742876e53c2d8a5b9792f5ece..bad21689be4ee93e66874e07581e359bc5fa3d96 100644 (file)
@@ -78,6 +78,7 @@ void _init() {
   registerserverhandler("W",&handlewhoismsg,2);
   registerserverhandler("AC",&handleaccountmsg,4);
   registerserverhandler("R",&handlestatsmsg,2);
+  registerserverhandler("P",&handleprivmsg,2);
   
   /* Fake the addition of our own server */
   handleserverchange(HOOK_SERVER_NEWSERVER,(void *)numerictolong(mynumeric->content,2));
@@ -111,6 +112,7 @@ void _fini() {
   deregisterserverhandler("W",&handlewhoismsg);
   deregisterserverhandler("AC",&handleaccountmsg);
   deregisterserverhandler("R",&handlestatsmsg);  
+  deregisterserverhandler("P",&handleprivmsg);
 }
 
 /*
index 5b2c7fc39235a1521ae33cf47668c3b0f08f4d9e..7469c17321f6dafbde04491878de94f04ab466e3 100644 (file)
@@ -188,6 +188,7 @@ int handleusermodemsg(void *source, int cargc, char **cargv);
 int handlewhoismsg(void *source, int cargc, char **cargv);
 int handleaccountmsg(void *source, int cargc, char **cargv);
 int handlestatsmsg(void *source, int cargc, char **cargv);
+int handleprivmsg(void *source, int cargc, char **cargv);
 
 /* These functions have been replaced by macros 
 nick **gethandlebynumeric(long numeric);
index 057591b76f9be57dcb92c37c70579ec1b276234d..0f341776cda20a497cdd07a3eb706ad95f685e18 100644 (file)
@@ -464,3 +464,31 @@ int handlestatsmsg(void *source, int cargc, char **cargv) {
 
   return CMD_OK;
 }
+
+int handleprivmsg(void *source, int cargc, char **cargv) {
+  nick *sender;
+  char *message;
+  void *args[3];
+
+  if (cargc<2)
+    return CMD_OK;
+
+  if (cargv[0][0]!='$')
+    return CMD_OK;
+
+  sender=getnickbynumericstr((char *)source);
+
+  if (!match2strings(cargv[0] + 1,myserver->content))
+    return CMD_OK;
+
+  message=cargv[0];
+
+  args[0]=sender;
+  args[1]=cargv[0];
+  args[2]=cargv[1];
+
+  triggerhook(HOOK_NICK_MASKPRIVMSG, (void *)args);
+
+  return CMD_OK;
+}
+