implemented the new events
authorpk910 <philipp@zoelle1.de>
Fri, 12 Aug 2011 01:15:04 +0000 (03:15 +0200)
committerpk910 <philipp@zoelle1.de>
Fri, 12 Aug 2011 01:15:04 +0000 (03:15 +0200)
IRCEvents.c
IRCEvents.h
IRCParser.c

index 010bb7a309df13aabd1eaff0d9faeb38911ca549..4fe336d153db5327bb74c45276bf90abe2a2a341 100644 (file)
@@ -56,7 +56,7 @@ int event_privctcp(struct UserNode *user, struct ChanNode *chan, char *command,
     return 1;
 }
 
-int event_invite(struct UserNode *user, struct ChanUser *target, char *channel) {
+int event_invite(struct UserNode *user, char *channel) {
     return 1;
 }
 
index ce560ed95bea4de824736fdc6d7a9374501f4b48..8933b58b85d7ccbc38d956a253d08ff2bf01617a 100644 (file)
@@ -13,14 +13,14 @@ int event_part(struct ChanUser *chanuser, char *reason);
 int event_quit(struct UserNode *user, char *reason);
 int event_kick(struct UserNode *user, struct ChanUser *target, char *reason);
 int event_topic(struct UserNode *user, struct ChanNode *chan, const char *new_topic);
-int event_mode(struct UserNode *user, struct ChanNode *chan, char *modes, char **argv, int argc);
+int event_mode(struct UserNode *user, struct ChanNode *chan, char *modes, char **argv, int argc); /* TODO */
 int event_chanmsg(struct UserNode *user, struct ChanNode *chan, char *message);
 int event_privmsg(struct UserNode *user, struct UserNode *target, char *message);
 int event_channotice(struct UserNode *user, struct ChanNode *chan, char *message);
 int event_privnotice(struct UserNode *user, struct UserNode *target, char *message);
 int event_chanctcp(struct UserNode *user, struct ChanNode *chan, char *command, char *text);
 int event_privctcp(struct UserNode *user, struct ChanNode *chan, char *command, char *text);
-int event_invite(struct UserNode *user, struct ChanUser *target, char *channel);
+int event_invite(struct UserNode *user, char *channel);
 int event_raw(struct ClientSocket *client, char *from, char *cmd, char **argv, int argc);
 
 #endif
\ No newline at end of file
index 6e663e694cf18bc00418fd4c3c38adfd95b5607c..ac2cb60a2fe06f29736914a76d9a0302142d6775 100644 (file)
@@ -78,8 +78,10 @@ static void parse_raw(struct ClientSocket *client, char *from, char *cmd, char *
             break;
         }
     }
-    if(!ret) {
-        //fprintf(stderr,"PARSE ERROR: %s", cmd); commented out right now - we're still developing and this is very spammy
+    if(!irc_cmd) {
+        event_raw(client, from, cmd, argv, argc);
+    } else if(!ret) {
+        fprintf(stderr,"PARSE ERROR: %s", cmd);
     }
 }
 
@@ -224,12 +226,38 @@ static IRC_CMD(raw_privmsg) {
     }
     if(argv[0][0] == '#') { //Channel message
         struct ChanNode *chan = getChanByName(argv[0]);
-        if(chan && chan->chanbot == client->user)
-            event_chanmsg(user, chan, argv[1]);
+        if(chan && chan->chanbot == client->user) {
+            if(argv[1][0] == '\001') {
+                char *cmd = &argv[1][1];
+                char *text = strstr(cmd, " ");
+                if(text) {
+                    *text = '\0';
+                    text++;
+                    if(strlen(text) && text[strlen(text)-1] == '\001')
+                        text[strlen(text)-1] = '\0';
+                } else if(strlen(cmd) && cmd[strlen(cmd)-1] == '\001')
+                    cmd[strlen(cmd)-1] = '\0';
+                event_chanctcp(user, chan, cmd, text);
+            } else
+                event_chanmsg(user, chan, argv[1]);
+        }
     } else {
         struct UserNode *target = getUserByNick(argv[0]);
-        if(target)
-            event_privmsg(user, target, argv[1]);
+        if(target) {
+            if(argv[1][0] == '\001') {
+                char *cmd = &argv[1][1];
+                char *text = strstr(cmd, " ");
+                if(text) {
+                    *text = '\0';
+                    text++;
+                    if(strlen(text) && text[strlen(text)-1] == '\001')
+                        text[strlen(text)-1] = '\0';
+                } else if(strlen(cmd) && cmd[strlen(cmd)-1] == '\001')
+                    cmd[strlen(cmd)-1] = '\0';
+                event_privctcp(user, chan, cmd, text);
+            } else
+                event_privmsg(user, target, argv[1]);
+        }
     }
     return 1;
 }
@@ -277,9 +305,17 @@ static IRC_CMD(raw_315) {
     return 1;
 }
 
+static IRC_CMD(raw_invite) {
+    if(from == NULL || argc < 2) return 0;
+    struct UserNode *user = getUserByMask(from);
+    event_invite(user, argv[1]);
+    return 1;
+}
+
 void parser_init() {
     //all the raws we receive...
     register_irc_function("001", raw_001);
+    register_irc_function("INVITE", raw_invite);
     register_irc_function("NOTICE", raw_notice);
     register_irc_function("TOPIC", raw_topic);
     register_irc_function("KICK", raw_kick);