-/* IRCEvents.c - NeonServ v5.0
+/* IRCEvents.c - NeonServ v5.3
* Copyright (C) 2011 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
#define BIND_TYPE_INVITE 13
#define BIND_TYPE_RAW 14
#define BIND_TYPE_BOT_READY 15
+#define BIND_TYPE_REGISTERED 16
+#define BIND_TYPE_FREEUSER 17
+#define BIND_TYPE_FREECHAN 18
-#define TOTAL_BIND_TYPES 16
+#define TOTAL_BIND_TYPES 19
void init_bind() {
binds = calloc(TOTAL_BIND_TYPES, sizeof(*binds));
FUNC_BIND(bot_ready, bot_ready_func_t, BIND_TYPE_BOT_READY)
FUNC_UNBIND(bot_ready, bot_ready_func_t, BIND_TYPE_BOT_READY)
FUNC_EVENT(bot_ready, bot_ready_func_t, BIND_TYPE_BOT_READY, (struct ClientSocket *client), (client))
+
+FUNC_BIND(registered, registered_func_t, BIND_TYPE_REGISTERED)
+FUNC_UNBIND(registered, registered_func_t, BIND_TYPE_REGISTERED)
+int event_registered(struct UserNode *old_user, struct UserNode *new_user) {
+ struct binding *cbind;
+ int ret = 0;
+ pre_event(BIND_TYPE_REGISTERED);
+ for(cbind = binds[BIND_TYPE_REGISTERED]; cbind; cbind = cbind->next) {
+ registered_func_t *func = cbind->func;
+ ret |= func(old_user, new_user);
+ }
+ post_event(BIND_TYPE_REGISTERED);
+ return ret;
+}
+
+FUNC_BIND(freeuser, freeuser_func_t, BIND_TYPE_FREEUSER)
+FUNC_UNBIND(freeuser, freeuser_func_t, BIND_TYPE_FREEUSER)
+FUNC_EVENT(freeuser, freeuser_func_t, BIND_TYPE_FREEUSER, (struct UserNode *user), (user))
+
+FUNC_BIND(freechan, freechan_func_t, BIND_TYPE_FREECHAN)
+FUNC_UNBIND(freechan, freechan_func_t, BIND_TYPE_FREECHAN)
+FUNC_EVENT(freechan, freechan_func_t, BIND_TYPE_FREECHAN, (struct ChanNode *chan), (chan))