added user registered event, tidied up helper functions and added automatic auth...
[NeonServV5.git] / src / IRCEvents.c
index 8176ef961af89fa5198820aa6c443435c1f3893a..a8239a9c420012c91cdfcd4a537c49c1bc285e9b 100644 (file)
@@ -44,8 +44,9 @@ static void **binds;
 #define BIND_TYPE_INVITE     13
 #define BIND_TYPE_RAW        14
 #define BIND_TYPE_BOT_READY  15
+#define BIND_TYPE_REGISTERED 16
 
-#define TOTAL_BIND_TYPES     16
+#define TOTAL_BIND_TYPES     17
 
 void init_bind() {
     binds = calloc(TOTAL_BIND_TYPES, sizeof(*binds));
@@ -189,3 +190,17 @@ FUNC_EVENT(raw, raw_func_t, BIND_TYPE_RAW, (struct ClientSocket *client, char *f
 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;
+}