#include "IRCParser.h"
+#include "UserNode.h"
+#include "ChanNode.h"
+#include "ChanUser.h"
+#include "IRCEvents.h"
#include "ClientSocket.h"
struct irc_cmd *irc_commands = NULL;
static void parse_raw(struct ClientSocket *client, char *from, char *cmd, char **argv, int argc) {
struct irc_cmd *irc_cmd;
+ int ret = 0;
for(irc_cmd = irc_commands; irc_cmd; irc_cmd = irc_cmd->next) {
if(!stricmp(irc_cmd->cmd, cmd)) {
- irc_cmd->func(client, from, argv, argc);
+ ret = irc_cmd->func(client, from, argv, argc);
break;
}
}
+ if(!ret) {
+ fprintf(stderr,"PARSE ERROR: %s", cmd);
+ }
}
static IRC_CMD(raw_001) {
client->flags |= SOCKET_FLAG_READY;
- putsock(client, "PRIVMSG Watchcat :hi");
+ putsock(client, "JOIN #pktest");
+ return 1;
+}
+
+static IRC_CMD(raw_join) {
+ if(from == NULL || argc < 1) return 0;
+ struct UserNode *user = getUserByMask(from);
+ if(user == NULL) {
+ user = addUserMask(from);
+ }
+ struct ChanNode *chan = getChanByName(argv[0]);
+ if(chan == NULL) {
+ chan = addChannel(argv[0]);
+
+ }
+ putsock(client, "PRIVMSG #pktest :hi");
+
return 1;
}
void parser_init() {
//all the raws we receive...
register_irc_function("001", raw_001);
+ register_irc_function("JOIN", raw_join);
register_irc_function("PING", raw_ping);
}