]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/channel.c
s_log.* -> logger.* (s_foo looks ugly, lets try to get rid of it)
[irc/rqf/shadowircd.git] / src / channel.c
index ece8bd96eff7272e506058db95d2d6b22f8295c7..d1acd20b511117ddf299e1751bcfdd5f538cda42 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 #include "stdinc.h"
-#include "tools.h"
 #include "channel.h"
 #include "client.h"
 #include "common.h"
 #include "whowas.h"
 #include "s_conf.h"            /* ConfigFileEntry, ConfigChannel */
 #include "s_newconf.h"
-#include "event.h"
-#include "memory.h"
-#include "balloc.h"
-#include "s_log.h"
+#include "logger.h"
 
 extern rb_dlink_list global_channel_list;
 
 extern struct config_channel_entry ConfigChannel;
-extern BlockHeap *channel_heap;
-extern BlockHeap *ban_heap;
-extern BlockHeap *topic_heap;
-extern BlockHeap *member_heap;
+extern rb_bh *channel_heap;
+extern rb_bh *ban_heap;
+extern rb_bh *topic_heap;
+extern rb_bh *member_heap;
 
 static int channel_capabs[] = { CAP_EX, CAP_IE,
        CAP_SERVICE,
@@ -77,10 +73,10 @@ static int h_can_join;
 void
 init_channels(void)
 {
-       channel_heap = BlockHeapCreate(sizeof(struct Channel), CHANNEL_HEAP_SIZE);
-       ban_heap = BlockHeapCreate(sizeof(struct Ban), BAN_HEAP_SIZE);
-       topic_heap = BlockHeapCreate(TOPICLEN + 1 + USERHOST_REPLYLEN, TOPIC_HEAP_SIZE);
-       member_heap = BlockHeapCreate(sizeof(struct membership), MEMBER_HEAP_SIZE);
+       channel_heap = rb_bh_create(sizeof(struct Channel), CHANNEL_HEAP_SIZE, "channel_heap");
+       ban_heap = rb_bh_create(sizeof(struct Ban), BAN_HEAP_SIZE, "ban_heap");
+       topic_heap = rb_bh_create(TOPICLEN + 1 + USERHOST_REPLYLEN, TOPIC_HEAP_SIZE, "topic_heap");
+       member_heap = rb_bh_create(sizeof(struct membership), MEMBER_HEAP_SIZE, "member_heap");
 
        h_can_join = register_hook("can_join");
 }
@@ -92,25 +88,25 @@ struct Channel *
 allocate_channel(const char *chname)
 {
        struct Channel *chptr;
-       chptr = BlockHeapAlloc(channel_heap);
-       DupString(chptr->chname, chname);
+       chptr = rb_bh_alloc(channel_heap);
+       chptr->chname = rb_strdup(chname);
        return (chptr);
 }
 
 void
 free_channel(struct Channel *chptr)
 {
-       MyFree(chptr->chname);
-       BlockHeapFree(channel_heap, chptr);
+       rb_free(chptr->chname);
+       rb_bh_free(channel_heap, chptr);
 }
 
 struct Ban *
 allocate_ban(const char *banstr, const char *who)
 {
        struct Ban *bptr;
-       bptr = BlockHeapAlloc(ban_heap);
-       DupString(bptr->banstr, banstr);
-       DupString(bptr->who, who);
+       bptr = rb_bh_alloc(ban_heap);
+       bptr->banstr = rb_strdup(banstr);
+       bptr->who = rb_strdup(who);
 
        return (bptr);
 }
@@ -118,9 +114,9 @@ allocate_ban(const char *banstr, const char *who)
 void
 free_ban(struct Ban *bptr)
 {
-       MyFree(bptr->banstr);
-       MyFree(bptr->who);
-       BlockHeapFree(ban_heap, bptr);
+       rb_free(bptr->banstr);
+       rb_free(bptr->who);
+       rb_bh_free(ban_heap, bptr);
 }
 
 
@@ -144,7 +140,7 @@ find_channel_membership(struct Channel *chptr, struct Client *client_p)
         */
        if(rb_dlink_list_length(&chptr->members) < rb_dlink_list_length(&client_p->user->channel))
        {
-               DLINK_FOREACH(ptr, chptr->members.head)
+               RB_DLINK_FOREACH(ptr, chptr->members.head)
                {
                        msptr = ptr->data;
 
@@ -154,7 +150,7 @@ find_channel_membership(struct Channel *chptr, struct Client *client_p)
        }
        else
        {
-               DLINK_FOREACH(ptr, client_p->user->channel.head)
+               RB_DLINK_FOREACH(ptr, client_p->user->channel.head)
                {
                        msptr = ptr->data;
 
@@ -209,7 +205,7 @@ add_user_to_channel(struct Channel *chptr, struct Client *client_p, int flags)
        if(client_p->user == NULL)
                return;
 
-       msptr = BlockHeapAlloc(member_heap);
+       msptr = rb_bh_alloc(member_heap);
 
        msptr->chptr = chptr;
        msptr->client_p = client_p;
@@ -246,12 +242,12 @@ remove_user_from_channel(struct membership *msptr)
        if(client_p->servptr == &me)
                rb_dlinkDelete(&msptr->locchannode, &chptr->locmembers);
 
-       chptr->users_last = CurrentTime;
+       chptr->users_last = rb_current_time();
 
        if(!(chptr->mode.mode & MODE_PERMANENT) && rb_dlink_list_length(&chptr->members) <= 0)
                destroy_channel(chptr);
 
-       BlockHeapFree(member_heap, msptr);
+       rb_bh_free(member_heap, msptr);
 
        return;
 }
@@ -273,7 +269,7 @@ remove_user_from_channels(struct Client *client_p)
        if(client_p == NULL)
                return;
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, client_p->user->channel.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, client_p->user->channel.head)
        {
                msptr = ptr->data;
                chptr = msptr->chptr;
@@ -283,12 +279,12 @@ remove_user_from_channels(struct Client *client_p)
                if(client_p->servptr == &me)
                        rb_dlinkDelete(&msptr->locchannode, &chptr->locmembers);
 
-               chptr->users_last = CurrentTime;
+               chptr->users_last = rb_current_time();
 
                if(!(chptr->mode.mode & MODE_PERMANENT) && rb_dlink_list_length(&chptr->members) <= 0)
                        destroy_channel(chptr);
 
-               BlockHeapFree(member_heap, msptr);
+               rb_bh_free(member_heap, msptr);
        }
 
        client_p->user->channel.head = client_p->user->channel.tail = NULL;
@@ -311,7 +307,7 @@ invalidate_bancache_user(struct Client *client_p)
        if(client_p == NULL)
                return;
 
-       DLINK_FOREACH(ptr, client_p->user->channel.head)
+       RB_DLINK_FOREACH(ptr, client_p->user->channel.head)
        {
                msptr = ptr->data;
                msptr->bants = 0;
@@ -354,7 +350,7 @@ free_channel_list(rb_dlink_list * list)
        rb_dlink_node *next_ptr;
        struct Ban *actualBan;
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, list->head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, list->head)
        {
                actualBan = ptr->data;
                free_ban(actualBan);
@@ -375,7 +371,7 @@ destroy_channel(struct Channel *chptr)
 {
        rb_dlink_node *ptr, *next_ptr;
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, chptr->invites.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, chptr->invites.head)
        {
                del_invite(chptr, ptr->data);
        }
@@ -440,7 +436,7 @@ channel_member_names(struct Channel *chptr, struct Client *client_p, int show_eo
 
                t = lbuf + cur_len;
 
-               DLINK_FOREACH(ptr, chptr->members.head)
+               RB_DLINK_FOREACH(ptr, chptr->members.head)
                {
                        msptr = ptr->data;
                        target_p = msptr->client_p;
@@ -544,7 +540,7 @@ is_banned(struct Channel *chptr, struct Client *who, struct membership *msptr,
                }
        }
 
-       DLINK_FOREACH(ptr, chptr->banlist.head)
+       RB_DLINK_FOREACH(ptr, chptr->banlist.head)
        {
                actualBan = ptr->data;
                if(match(actualBan->banstr, s) ||
@@ -559,7 +555,7 @@ is_banned(struct Channel *chptr, struct Client *who, struct membership *msptr,
 
        if((actualBan != NULL) && ConfigChannel.use_except)
        {
-               DLINK_FOREACH(ptr, chptr->exceptlist.head)
+               RB_DLINK_FOREACH(ptr, chptr->exceptlist.head)
                {
                        actualExcept = ptr->data;
 
@@ -650,7 +646,7 @@ is_quieted(struct Channel *chptr, struct Client *who, struct membership *msptr,
                }
        }
 
-       DLINK_FOREACH(ptr, chptr->quietlist.head)
+       RB_DLINK_FOREACH(ptr, chptr->quietlist.head)
        {
                actualBan = ptr->data;
                if(match(actualBan->banstr, s) ||
@@ -665,7 +661,7 @@ is_quieted(struct Channel *chptr, struct Client *who, struct membership *msptr,
 
        if((actualBan != NULL) && ConfigChannel.use_except)
        {
-               DLINK_FOREACH(ptr, chptr->exceptlist.head)
+               RB_DLINK_FOREACH(ptr, chptr->exceptlist.head)
                {
                        actualExcept = ptr->data;
 
@@ -753,7 +749,7 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
 
        if(chptr->mode.mode & MODE_INVITEONLY)
        {
-               DLINK_FOREACH(invite, source_p->user->invited.head)
+               RB_DLINK_FOREACH(invite, source_p->user->invited.head)
                {
                        if(invite->data == chptr)
                                break;
@@ -762,7 +758,7 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
                {
                        if(!ConfigChannel.use_invex)
                                return (ERR_INVITEONLYCHAN);
-                       DLINK_FOREACH(ptr, chptr->invexlist.head)
+                       RB_DLINK_FOREACH(ptr, chptr->invexlist.head)
                        {
                                invex = ptr->data;
                                if(match(invex->banstr, src_host)
@@ -788,7 +784,7 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
        /* join throttling stuff --nenolod */
        else if(chptr->mode.join_num > 0 && chptr->mode.join_time > 0)
        {
-               if ((CurrentTime - chptr->join_delta <= 
+               if ((rb_current_time() - chptr->join_delta <= 
                        chptr->mode.join_time) && (chptr->join_count >=
                        chptr->mode.join_num))
                        i = ERR_THROTTLE;
@@ -797,7 +793,7 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
        /* allow /invite to override +l/+r/+j also -- jilles */
        if (i != 0 && invite == NULL)
        {
-               DLINK_FOREACH(invite, source_p->user->invited.head)
+               RB_DLINK_FOREACH(invite, source_p->user->invited.head)
                {
                        if(invite->data == chptr)
                                break;
@@ -889,7 +885,7 @@ find_bannickchange_channel(struct Client *client_p)
        rb_sprintf(src_host, "%s!%s@%s", client_p->name, client_p->username, client_p->host);
        rb_sprintf(src_iphost, "%s!%s@%s", client_p->name, client_p->username, client_p->sockhost);
 
-       DLINK_FOREACH(ptr, client_p->user->channel.head)
+       RB_DLINK_FOREACH(ptr, client_p->user->channel.head)
        {
                msptr = ptr->data;
                chptr = msptr->chptr;
@@ -946,7 +942,7 @@ check_spambot_warning(struct Client *source_p, const char *name)
        else
        {
                if((t_delta =
-                   (CurrentTime - source_p->localClient->last_leave_time)) >
+                   (rb_current_time() - source_p->localClient->last_leave_time)) >
                   JOIN_LEAVE_COUNT_EXPIRE_TIME)
                {
                        decrement_count = (t_delta / JOIN_LEAVE_COUNT_EXPIRE_TIME);
@@ -957,7 +953,7 @@ check_spambot_warning(struct Client *source_p, const char *name)
                }
                else
                {
-                       if((CurrentTime -
+                       if((rb_current_time() -
                            (source_p->localClient->last_join_time)) < GlobalSetOptions.spam_time)
                        {
                                /* oh, its a possible spambot */
@@ -965,9 +961,9 @@ check_spambot_warning(struct Client *source_p, const char *name)
                        }
                }
                if(name != NULL)
-                       source_p->localClient->last_join_time = CurrentTime;
+                       source_p->localClient->last_join_time = rb_current_time();
                else
-                       source_p->localClient->last_leave_time = CurrentTime;
+                       source_p->localClient->last_leave_time = rb_current_time();
        }
 }
 
@@ -993,7 +989,7 @@ check_splitmode(void *unused)
                                splitmode = 1;
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                                     "Network split, activating splitmode");
-                               eventAddIsh("check_splitmode", check_splitmode, NULL, 2);
+                               check_splitmode_ev = rb_event_addish("check_splitmode", check_splitmode, NULL, 2);
                        }
                }
                /* in splitmode, check whether its finished */
@@ -1004,7 +1000,7 @@ check_splitmode(void *unused)
                        sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                             "Network rejoined, deactivating splitmode");
 
-                       eventDelete(check_splitmode, NULL);
+                       rb_event_delete(check_splitmode_ev);
                }
        }
 }
@@ -1024,7 +1020,7 @@ allocate_topic(struct Channel *chptr)
        if(chptr == NULL)
                return;
 
-       ptr = BlockHeapAlloc(topic_heap);
+       ptr = rb_bh_alloc(topic_heap);
 
        /* Basically we allocate one large block for the topic and
         * the topic info.  We then split it up into two and shove it
@@ -1054,7 +1050,7 @@ free_topic(struct Channel *chptr)
         * MUST change this as well
         */
        ptr = chptr->topic;
-       BlockHeapFree(topic_heap, ptr);
+       rb_bh_free(topic_heap, ptr);
        chptr->topic = NULL;
        chptr->topic_info = NULL;
 }