X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=cmd_neonserv_kick.c;h=373881ceb18994201e07bead95163ec878beb4fb;hb=795115bf680185ae01043bd1222b78bfed8c1d87;hp=8c6b0138ea47d0e6e536cf77d180858f5bcf8924;hpb=3f53955528934c6e1008c2495e8ddd9e6481c1d5;p=NeonServV5.git diff --git a/cmd_neonserv_kick.c b/cmd_neonserv_kick.c index 8c6b013..373881c 100644 --- a/cmd_neonserv_kick.c +++ b/cmd_neonserv_kick.c @@ -1,19 +1,22 @@ +#include "cmd_neonserv.h" + /* * argv[0] nick[,*auth[,*!*@mask[...]]] * argv[1-*] reason */ static USERLIST_CALLBACK(neonserv_cmd_kick_userlist_lookup); -static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nicks, char *reason); +static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, struct Event *event, char *nicks, char *reason); struct neonserv_cmd_kick_cache { struct ClientSocket *client, *textclient; struct UserNode *user; + struct Event *event; char *nicks; char *reason; }; -static CMD_BIND(neonserv_cmd_kick) { +CMD_BIND(neonserv_cmd_kick) { struct neonserv_cmd_kick_cache *cache = malloc(sizeof(*cache)); if (!cache) { perror("malloc() failed"); @@ -22,24 +25,25 @@ static CMD_BIND(neonserv_cmd_kick) { cache->client = client; cache->textclient = getTextBot(); cache->user = user; + cache->event = event; cache->nicks = strdup(argv[0]); if(argc > 1) { cache->reason = strdup(merge_argv(argv, 1, argc)); } else cache->reason = NULL; - get_userlist(chan, neonserv_cmd_kick_userlist_lookup, cache); + get_userlist_with_invisible(chan, neonserv_cmd_kick_userlist_lookup, cache); } static USERLIST_CALLBACK(neonserv_cmd_kick_userlist_lookup) { struct neonserv_cmd_kick_cache *cache = data; - neonserv_cmd_kick_async1(cache->client, cache->textclient, cache->user, chan, cache->nicks, (cache->reason ? cache->reason : "Bye.")); + neonserv_cmd_kick_async1(cache->client, cache->textclient, cache->user, chan, cache->event, cache->nicks, (cache->reason ? cache->reason : "Bye.")); free(cache->nicks); if(cache->reason) free(cache->reason); free(cache); } -static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nicks, char *reason) { +static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, struct Event *event, char *nicks, char *reason) { int i, kicked_users = 0, provided_nicks = 0; char *nick, *nextnick; struct UserNode *cuser; @@ -130,4 +134,6 @@ static void neonserv_cmd_kick_async1(struct ClientSocket *client, struct ClientS reply(getTextBot(), user, "NS_KICK_DONE", kicked_users, chan->name); else reply(getTextBot(), user, "NS_KICK_FAIL", client->user->nick); + if(kicked_users) + logEvent(event); }