From bd96073015180a8ad1655ccd48d1662a54d30031 Mon Sep 17 00:00:00 2001 From: pk910 Date: Thu, 11 Aug 2011 07:09:14 +0200 Subject: [PATCH] added WHOHandler.c without any functions --- IRCParser.c | 19 ++++++++++++++++++- WHOHandler.c | 14 ++++++++++++++ WHOHandler.h | 16 ++++++++++++++++ main.c | 1 + 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 WHOHandler.c create mode 100644 WHOHandler.h diff --git a/IRCParser.c b/IRCParser.c index ed71d39..710117c 100644 --- a/IRCParser.c +++ b/IRCParser.c @@ -5,6 +5,7 @@ #include "ChanUser.h" #include "IRCEvents.h" #include "ClientSocket.h" +#include "WHOHandler.h" struct irc_cmd *irc_commands = NULL; @@ -82,6 +83,10 @@ static void parse_raw(struct ClientSocket *client, char *from, char *cmd, char * } } +static USERLIST_CALLBACK(got_channel_userlist) { + chan->flags |= CHANFLAG_RECEIVED_USERLIST; +} + static IRC_CMD(raw_001) { client->flags |= SOCKET_FLAG_READY; putsock(client, "JOIN #pktest"); @@ -98,7 +103,7 @@ static IRC_CMD(raw_join) { if(chan == NULL) { chan = addChannel(argv[0]); //request member list - //TODO! + get_userlist(chan, got_channel_userlist); } else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) { struct ChanUser *chanuser = addChanUser(chan, user); event_join(chanuser); @@ -174,9 +179,21 @@ static IRC_CMD(raw_ping) { return 1; } +static IRC_CMD(raw_354) { + recv_whohandler_354(client, argv, argc); + return 1; +} + +static IRC_CMD(raw_315) { + recv_whohandler_315(client, argv, argc); + return 1; +} + void parser_init() { //all the raws we receive... register_irc_function("001", raw_001); + register_irc_function("354", raw_354); + register_irc_function("315", raw_315); register_irc_function("KICK", raw_kick); register_irc_function("JOIN", raw_join); register_irc_function("PART", raw_part); diff --git a/WHOHandler.c b/WHOHandler.c new file mode 100644 index 0000000..1aeca95 --- /dev/null +++ b/WHOHandler.c @@ -0,0 +1,14 @@ + +#include "WHOHandler.h" + +void get_userlist(struct ChanNode *chan, userlist_callback_t callback) { + +} + +void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int argc) { + +} + +void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int argc) { + +} diff --git a/WHOHandler.h b/WHOHandler.h new file mode 100644 index 0000000..e1b08a9 --- /dev/null +++ b/WHOHandler.h @@ -0,0 +1,16 @@ +#ifndef _WHOHandler_h +#define _WHOHandler_h + +#include "main.h" + +struct ClientSocket; +struct ChanNode; + +#define USERLIST_CALLBACK(NAME) int NAME(UNUSED_ARG(struct ClientSocket *client), UNUSED_ARG(struct ChanNode *chan)) +typedef USERLIST_CALLBACK(userlist_callback_t); + +void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int argc); +void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int argc); +void get_userlist(struct ChanNode *chan, userlist_callback_t callback); + +#endif \ No newline at end of file diff --git a/main.c b/main.c index 976b3c5..04a9f7d 100644 --- a/main.c +++ b/main.c @@ -10,6 +10,7 @@ #include "ChanNode.c" #include "ChanUser.c" #include "IRCEvents.c" +#include "WHOHandler.c" void just_test_it() { struct UserNode *user = addUser("TestBot"); -- 2.20.1