]> 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 c0fdcc3d626909fdbbd7abc933d5e4064ece3e3c..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 dlink_list global_channel_list;
+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);
 }
 
 
@@ -134,7 +130,7 @@ struct membership *
 find_channel_membership(struct Channel *chptr, struct Client *client_p)
 {
        struct membership *msptr;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
 
        if(!IsClient(client_p))
                return NULL;
@@ -142,9 +138,9 @@ find_channel_membership(struct Channel *chptr, struct Client *client_p)
        /* Pick the most efficient list to use to be nice to things like
         * CHANSERV which could be in a large number of channels
         */
-       if(dlink_list_length(&chptr->members) < dlink_list_length(&client_p->user->channel))
+       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,17 +205,17 @@ 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;
        msptr->flags = flags;
 
-       dlinkAdd(msptr, &msptr->usernode, &client_p->user->channel);
-       dlinkAdd(msptr, &msptr->channode, &chptr->members);
+       rb_dlinkAdd(msptr, &msptr->usernode, &client_p->user->channel);
+       rb_dlinkAdd(msptr, &msptr->channode, &chptr->members);
 
        if(MyClient(client_p))
-               dlinkAdd(msptr, &msptr->locchannode, &chptr->locmembers);
+               rb_dlinkAdd(msptr, &msptr->locchannode, &chptr->locmembers);
 }
 
 /* remove_user_from_channel()
@@ -240,18 +236,18 @@ remove_user_from_channel(struct membership *msptr)
        client_p = msptr->client_p;
        chptr = msptr->chptr;
 
-       dlinkDelete(&msptr->usernode, &client_p->user->channel);
-       dlinkDelete(&msptr->channode, &chptr->members);
+       rb_dlinkDelete(&msptr->usernode, &client_p->user->channel);
+       rb_dlinkDelete(&msptr->channode, &chptr->members);
 
        if(client_p->servptr == &me)
-               dlinkDelete(&msptr->locchannode, &chptr->locmembers);
+               rb_dlinkDelete(&msptr->locchannode, &chptr->locmembers);
 
-       chptr->users_last = CurrentTime;
+       chptr->users_last = rb_current_time();
 
-       if(!(chptr->mode.mode & MODE_PERMANENT) && dlink_list_length(&chptr->members) <= 0)
+       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;
 }
@@ -267,28 +263,28 @@ remove_user_from_channels(struct Client *client_p)
 {
        struct Channel *chptr;
        struct membership *msptr;
-       dlink_node *ptr;
-       dlink_node *next_ptr;
+       rb_dlink_node *ptr;
+       rb_dlink_node *next_ptr;
 
        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;
 
-               dlinkDelete(&msptr->channode, &chptr->members);
+               rb_dlinkDelete(&msptr->channode, &chptr->members);
 
                if(client_p->servptr == &me)
-                       dlinkDelete(&msptr->locchannode, &chptr->locmembers);
+                       rb_dlinkDelete(&msptr->locchannode, &chptr->locmembers);
 
-               chptr->users_last = CurrentTime;
+               chptr->users_last = rb_current_time();
 
-               if(!(chptr->mode.mode & MODE_PERMANENT) && dlink_list_length(&chptr->members) <= 0)
+               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;
@@ -306,12 +302,12 @@ void
 invalidate_bancache_user(struct Client *client_p)
 {
        struct membership *msptr;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
 
        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;
@@ -343,18 +339,18 @@ check_channel_name(const char *name)
 
 /* free_channel_list()
  *
- * input       - dlink list to free
+ * input       - rb_dlink list to free
  * output      -
  * side effects - list of b/e/I modes is cleared
  */
 void
-free_channel_list(dlink_list * list)
+free_channel_list(rb_dlink_list * list)
 {
-       dlink_node *ptr;
-       dlink_node *next_ptr;
+       rb_dlink_node *ptr;
+       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);
@@ -373,9 +369,9 @@ free_channel_list(dlink_list * list)
 void
 destroy_channel(struct Channel *chptr)
 {
-       dlink_node *ptr, *next_ptr;
+       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);
        }
@@ -389,7 +385,7 @@ destroy_channel(struct Channel *chptr)
        /* Free the topic */
        free_topic(chptr);
 
-       dlinkDelete(&chptr->node, &global_channel_list);
+       rb_dlinkDelete(&chptr->node, &global_channel_list);
        del_from_channel_hash(chptr->chname, chptr);
        free_channel(chptr);
 }
@@ -421,7 +417,7 @@ channel_member_names(struct Channel *chptr, struct Client *client_p, int show_eo
 {
        struct membership *msptr;
        struct Client *target_p;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
        char lbuf[BUFSIZE];
        char *t;
        int mlen;
@@ -434,13 +430,13 @@ channel_member_names(struct Channel *chptr, struct Client *client_p, int show_eo
        {
                is_member = IsMember(client_p, chptr);
 
-               cur_len = mlen = ircsprintf(lbuf, form_str(RPL_NAMREPLY),
+               cur_len = mlen = rb_sprintf(lbuf, form_str(RPL_NAMREPLY),
                                            me.name, client_p->name,
                                            channel_pub_or_secret(chptr), chptr->chname);
 
                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;
@@ -457,7 +453,7 @@ channel_member_names(struct Channel *chptr, struct Client *client_p, int show_eo
                                t = lbuf + mlen;
                        }
 
-                       tlen = ircsprintf(t, "%s%s ", find_channel_status(msptr, stack),
+                       tlen = rb_sprintf(t, "%s%s ", find_channel_status(msptr, stack),
                                          target_p->name);
 
                        cur_len += tlen;
@@ -492,8 +488,8 @@ channel_member_names(struct Channel *chptr, struct Client *client_p, int show_eo
 void
 del_invite(struct Channel *chptr, struct Client *who)
 {
-       dlinkFindDestroy(who, &chptr->invites);
-       dlinkFindDestroy(chptr, &who->user->invited);
+       rb_dlinkFindDestroy(who, &chptr->invites);
+       rb_dlinkFindDestroy(chptr, &who->user->invited);
 }
 
 /* is_banned()
@@ -511,7 +507,7 @@ is_banned(struct Channel *chptr, struct Client *who, struct membership *msptr,
        char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
        char src_althost[NICKLEN + USERLEN + HOSTLEN + 6];
        char *s3 = NULL;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
        struct Ban *actualBan = NULL;
        struct Ban *actualExcept = NULL;
 
@@ -521,8 +517,8 @@ is_banned(struct Channel *chptr, struct Client *who, struct membership *msptr,
        /* if the buffers havent been built, do it here */
        if(s == NULL)
        {
-               ircsprintf(src_host, "%s!%s@%s", who->name, who->username, who->host);
-               ircsprintf(src_iphost, "%s!%s@%s", who->name, who->username, who->sockhost);
+               rb_sprintf(src_host, "%s!%s@%s", who->name, who->username, who->host);
+               rb_sprintf(src_iphost, "%s!%s@%s", who->name, who->username, who->sockhost);
 
                s = src_host;
                s2 = src_iphost;
@@ -532,19 +528,19 @@ is_banned(struct Channel *chptr, struct Client *who, struct membership *msptr,
                /* if host mangling mode enabled, also check their real host */
                if(!strcmp(who->host, who->localClient->mangledhost))
                {
-                       ircsprintf(src_althost, "%s!%s@%s", who->name, who->username, who->orighost);
+                       rb_sprintf(src_althost, "%s!%s@%s", who->name, who->username, who->orighost);
                        s3 = src_althost;
                }
                /* if host mangling mode not enabled and no other spoof,
                 * also check the mangled form of their host */
                else if (!IsDynSpoof(who))
                {
-                       ircsprintf(src_althost, "%s!%s@%s", who->name, who->username, who->localClient->mangledhost);
+                       rb_sprintf(src_althost, "%s!%s@%s", who->name, who->username, who->localClient->mangledhost);
                        s3 = src_althost;
                }
        }
 
-       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;
 
@@ -617,7 +613,7 @@ is_quieted(struct Channel *chptr, struct Client *who, struct membership *msptr,
        char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
        char src_althost[NICKLEN + USERLEN + HOSTLEN + 6];
        char *s3 = NULL;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
        struct Ban *actualBan = NULL;
        struct Ban *actualExcept = NULL;
 
@@ -627,8 +623,8 @@ is_quieted(struct Channel *chptr, struct Client *who, struct membership *msptr,
        /* if the buffers havent been built, do it here */
        if(s == NULL)
        {
-               ircsprintf(src_host, "%s!%s@%s", who->name, who->username, who->host);
-               ircsprintf(src_iphost, "%s!%s@%s", who->name, who->username, who->sockhost);
+               rb_sprintf(src_host, "%s!%s@%s", who->name, who->username, who->host);
+               rb_sprintf(src_iphost, "%s!%s@%s", who->name, who->username, who->sockhost);
 
                s = src_host;
                s2 = src_iphost;
@@ -638,19 +634,19 @@ is_quieted(struct Channel *chptr, struct Client *who, struct membership *msptr,
                /* if host mangling mode enabled, also check their real host */
                if(!strcmp(who->host, who->localClient->mangledhost))
                {
-                       ircsprintf(src_althost, "%s!%s@%s", who->name, who->username, who->orighost);
+                       rb_sprintf(src_althost, "%s!%s@%s", who->name, who->username, who->orighost);
                        s3 = src_althost;
                }
                /* if host mangling mode not enabled and no other spoof,
                 * also check the mangled form of their host */
                else if (!IsDynSpoof(who))
                {
-                       ircsprintf(src_althost, "%s!%s@%s", who->name, who->username, who->localClient->mangledhost);
+                       rb_sprintf(src_althost, "%s!%s@%s", who->name, who->username, who->localClient->mangledhost);
                        s3 = src_althost;
                }
        }
 
-       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;
 
@@ -717,8 +713,8 @@ is_quieted(struct Channel *chptr, struct Client *who, struct membership *msptr,
 int
 can_join(struct Client *source_p, struct Channel *chptr, char *key)
 {
-       dlink_node *invite = NULL;
-       dlink_node *ptr;
+       rb_dlink_node *invite = NULL;
+       rb_dlink_node *ptr;
        struct Ban *invex = NULL;
        char src_host[NICKLEN + USERLEN + HOSTLEN + 6];
        char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
@@ -729,21 +725,21 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
 
        s_assert(source_p->localClient != NULL);
 
-       ircsprintf(src_host, "%s!%s@%s", source_p->name, source_p->username, source_p->host);
-       ircsprintf(src_iphost, "%s!%s@%s", source_p->name, source_p->username, source_p->sockhost);
+       rb_sprintf(src_host, "%s!%s@%s", source_p->name, source_p->username, source_p->host);
+       rb_sprintf(src_iphost, "%s!%s@%s", source_p->name, source_p->username, source_p->sockhost);
        if(source_p->localClient->mangledhost != NULL)
        {
                /* if host mangling mode enabled, also check their real host */
                if(!strcmp(source_p->host, source_p->localClient->mangledhost))
                {
-                       ircsprintf(src_althost, "%s!%s@%s", source_p->name, source_p->username, source_p->orighost);
+                       rb_sprintf(src_althost, "%s!%s@%s", source_p->name, source_p->username, source_p->orighost);
                        use_althost = 1;
                }
                /* if host mangling mode not enabled and no other spoof,
                 * also check the mangled form of their host */
                else if (!IsDynSpoof(source_p))
                {
-                       ircsprintf(src_althost, "%s!%s@%s", source_p->name, source_p->username, source_p->localClient->mangledhost);
+                       rb_sprintf(src_althost, "%s!%s@%s", source_p->name, source_p->username, source_p->localClient->mangledhost);
                        use_althost = 1;
                }
        }
@@ -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)
@@ -781,14 +777,14 @@ can_join(struct Client *source_p, struct Channel *chptr, char *key)
                return (ERR_BADCHANNELKEY);
 
        if(chptr->mode.limit &&
-          dlink_list_length(&chptr->members) >= (unsigned long) chptr->mode.limit)
+          rb_dlink_list_length(&chptr->members) >= (unsigned long) chptr->mode.limit)
                i = ERR_CHANNELISFULL;
        if(chptr->mode.mode & MODE_REGONLY && EmptyString(source_p->user->suser))
                i = ERR_NEEDREGGEDNICK;
        /* 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;
@@ -879,17 +875,17 @@ find_bannickchange_channel(struct Client *client_p)
 {
        struct Channel *chptr;
        struct membership *msptr;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
        char src_host[NICKLEN + USERLEN + HOSTLEN + 6];
        char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
 
        if (!MyClient(client_p))
                return NULL;
 
-       ircsprintf(src_host, "%s!%s@%s", client_p->name, client_p->username, client_p->host);
-       ircsprintf(src_iphost, "%s!%s@%s", client_p->name, client_p->username, client_p->sockhost);
+       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;
@@ -931,12 +927,12 @@ check_spambot_warning(struct Client *source_p, const char *name)
                {
                        /* Its already known as a possible spambot */
                        if(name != NULL)
-                               sendto_realops_snomask(SNO_BOTS, L_ALL,
+                               sendto_realops_snomask(SNO_BOTS, L_NETWIDE,
                                                     "User %s (%s@%s) trying to join %s is a possible spambot",
                                                     source_p->name,
                                                     source_p->username, source_p->orighost, name);
                        else
-                               sendto_realops_snomask(SNO_BOTS, L_ALL,
+                               sendto_realops_snomask(SNO_BOTS, L_NETWIDE,
                                                     "User %s (%s@%s) is a possible spambot",
                                                     source_p->name,
                                                     source_p->username, source_p->orighost);
@@ -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;
 }
@@ -1084,11 +1080,7 @@ set_channel_topic(struct Channel *chptr, const char *topic, const char *topic_in
        }
 }
 
-static const struct mode_letter
-{
-       const unsigned int mode;
-       const unsigned char letter;
-} flags[] =
+const struct mode_letter chmode_flags[] =
 {
        {MODE_INVITEONLY, 'i'},
        {MODE_MODERATED, 'm'},
@@ -1129,16 +1121,16 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
        *mbuf++ = '+';
        *pbuf = '\0';
 
-       for (i = 0; flags[i].mode; ++i)
-               if(chptr->mode.mode & flags[i].mode)
-                       *mbuf++ = flags[i].letter;
+       for (i = 0; chmode_flags[i].mode; ++i)
+               if(chptr->mode.mode & chmode_flags[i].mode)
+                       *mbuf++ = chmode_flags[i].letter;
 
        if(chptr->mode.limit)
        {
                *mbuf++ = 'l';
 
                if(!IsClient(client_p) || IsMember(client_p, chptr))
-                       pbuf += ircsprintf(pbuf, " %d", chptr->mode.limit);
+                       pbuf += rb_sprintf(pbuf, " %d", chptr->mode.limit);
        }
 
        if(*chptr->mode.key)
@@ -1146,7 +1138,7 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
                *mbuf++ = 'k';
 
                if(pbuf > buf2 || !IsClient(client_p) || IsMember(client_p, chptr))
-                       pbuf += ircsprintf(pbuf, " %s", chptr->mode.key);
+                       pbuf += rb_sprintf(pbuf, " %s", chptr->mode.key);
        }
 
        if(chptr->mode.join_num)
@@ -1154,7 +1146,7 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
                *mbuf++ = 'j';
 
                if(pbuf > buf2 || !IsClient(client_p) || IsMember(client_p, chptr))
-                       pbuf += ircsprintf(pbuf, " %d:%d", chptr->mode.join_num,
+                       pbuf += rb_sprintf(pbuf, " %d:%d", chptr->mode.join_num,
                                           chptr->mode.join_time);
        }
 
@@ -1163,7 +1155,7 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
                *mbuf++ = 'f';
 
                if(pbuf > buf2 || !IsClient(client_p) || IsMember(client_p, chptr))
-                       pbuf += ircsprintf(pbuf, " %s", chptr->mode.forward);
+                       pbuf += rb_sprintf(pbuf, " %s", chptr->mode.forward);
        }
 
        *mbuf = '\0';
@@ -1313,11 +1305,11 @@ send_cap_mode_changes(struct Client *client_p, struct Client *source_p,
                nocap = chcap_combos[j].cap_no;
 
                if(cap & CAP_TS6)
-                       mbl = preflen = ircsprintf(modebuf, ":%s TMODE %ld %s ",
+                       mbl = preflen = rb_sprintf(modebuf, ":%s TMODE %ld %s ",
                                                   use_id(source_p), (long) chptr->channelts,
                                                   chptr->chname);
                else
-                       mbl = preflen = ircsprintf(modebuf, ":%s MODE %s ",
+                       mbl = preflen = rb_sprintf(modebuf, ":%s MODE %s ",
                                                   source_p->name, chptr->chname);
 
                /* loop the list of - modes we have */
@@ -1381,7 +1373,7 @@ send_cap_mode_changes(struct Client *client_p, struct Client *source_p,
 
                        if(arg != NULL)
                        {
-                               len = ircsprintf(pbuf, "%s ", arg);
+                               len = rb_sprintf(pbuf, "%s ", arg);
                                pbuf += len;
                                pbl += len;
                                mc++;