From beccdd1e4cc119b5bd3bdd86a48bacec2192e2e9 Mon Sep 17 00:00:00 2001 From: pk910 Date: Thu, 11 Aug 2011 22:32:26 +0200 Subject: [PATCH] added a data parameter to get_userlist that gets passed to the callback --- IRCParser.c | 2 +- WHOHandler.c | 6 ++++-- WHOHandler.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/IRCParser.c b/IRCParser.c index de03a73..17cafd3 100644 --- a/IRCParser.c +++ b/IRCParser.c @@ -108,7 +108,7 @@ static IRC_CMD(raw_join) { chan = addChannel(argv[0]); //request member list addChanUser(chan, user); //it must be a bot - get_userlist(chan, got_channel_userlist); + get_userlist(chan, got_channel_userlist, NULL); } else if(!isUserOnChan(user, chan) && (chan->flags & CHANFLAG_RECEIVED_USERLIST)) { struct ChanUser *chanuser = addChanUser(chan, user); event_join(chanuser); diff --git a/WHOHandler.c b/WHOHandler.c index b4be93d..c87ef40 100644 --- a/WHOHandler.c +++ b/WHOHandler.c @@ -13,6 +13,7 @@ struct WHOQueueEntry { struct UserNode *user; struct WHOQueueEntry *next; userlist_callback_t *callback; + void *data; }; static struct WHOQueueEntry *first_entry = NULL, *last_entry = NULL; @@ -49,7 +50,7 @@ static struct WHOQueueEntry* getNextWHOQueueEntry(struct ClientSocket *client, i return entry; } -void get_userlist(struct ChanNode *chan, userlist_callback_t callback) { +void get_userlist(struct ChanNode *chan, userlist_callback_t callback, void *data) { struct ClientSocket *bot; for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { if(isUserOnChan(bot->user, chan)) @@ -60,6 +61,7 @@ void get_userlist(struct ChanNode *chan, userlist_callback_t callback) { entry->type = WHOQUEUETYPE_ISONQUEUE | WHOQUEUETYPE_USERLIST; entry->chan = chan; entry->callback = callback; + entry->data = data; //WHO ".$channel->getName().",".$id." d%tuhnaf,".$id putsock(bot, "WHO %s,%d %%tuhnaf,%d", chan->name, entry->type, entry->type); } @@ -124,7 +126,7 @@ void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int if(type & WHOQUEUETYPE_USERLIST) { //:OGN2.OnlineGamesNet.net 315 skynet #pk910,1 :End of /WHO list. entry->chan->flags |= CHANFLAG_RECEIVED_USERLIST; - entry->callback(client, entry->chan); + entry->callback(client, entry->chan, entry->data); } free(entry); } diff --git a/WHOHandler.h b/WHOHandler.h index 0c46dbd..9a578cc 100644 --- a/WHOHandler.h +++ b/WHOHandler.h @@ -6,7 +6,7 @@ struct ClientSocket; struct ChanNode; -#define USERLIST_CALLBACK(NAME) void NAME(UNUSED_ARG(struct ClientSocket *client), UNUSED_ARG(struct ChanNode *chan)) +#define USERLIST_CALLBACK(NAME) void NAME(UNUSED_ARG(struct ClientSocket *client), UNUSED_ARG(struct ChanNode *chan), UNUSED_ARG(void *data)) typedef USERLIST_CALLBACK(userlist_callback_t); void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int argc); -- 2.20.1