X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/135d6084c1f822354ec2c0fb7746dd51498fb297..5f5fc0447463454812f1de465387cf1ca99eaf69:/helpmod2/hchannel.c diff --git a/helpmod2/hchannel.c b/helpmod2/hchannel.c index 2a868b81..459a0c47 100644 --- a/helpmod2/hchannel.c +++ b/helpmod2/hchannel.c @@ -4,14 +4,6 @@ #include #include -#include "../lib/sstring.h" -#include "../lib/irc_string.h" -#include "../channel/channel.h" -#include "../localuser/localuserchannel.h" -#include "../core/schedule.h" -#include "../nick/nick.h" - - #include "hchannel.h" #include "haccount.h" #include "helpmod.h" @@ -110,7 +102,7 @@ int hchannel_del(hchannel *hchan) while (hchan->htickets) hticket_del(hchan->htickets, hchan); - localpartchannel(helpmodnick, hchan->real_channel); + localpartchannel(helpmodnick, hchan->real_channel, "Channel Removed"); free(hchan); @@ -236,16 +228,17 @@ void hchannel_remove_inactive_users(void) huser_on_channel((*hchanuser)->husr, hchan)->flags |= H_IDLE_WARNING; } } - hcommit_modes(); + /*hcommit_modes();*/ hchanuser = &(*hchanuser)->next; - } + } + hcommit_modes(); } /* Additionally, test if the channel has queue but no idle opers / staff */ if (hchan->flags & H_QUEUE && hchan->flags & H_QUEUE_TIMEOUT) { hchannel_user *tmp; for (tmp = hchan->channel_users;tmp;tmp = tmp->next) - if (huser_get_level(tmp->husr) > H_PEON) + if (huser_get_level(tmp->husr) >= H_TRIAL) { huser_channel *huserchan = huser_on_channel(tmp->husr, hchan); if ((time(NULL) - huserchan->last_activity < HELPMOD_QUEUE_TIMEOUT) && (huserchan->last_activity != tmp->time_joined)) @@ -328,7 +321,7 @@ void hchannels_dnmo(struct huser_struct *husr) /*if (on_queue(husr, huserchan) || on_desk(husr, huserchan))*/ if (huserchan != NULL) { - hchannel_user *tmp, **hchanuser = &hchan->channel_users; + hchannel_user *tmp = NULL, **hchanuser = &hchan->channel_users; for (;*hchanuser;hchanuser = &(*hchanuser)->next) if ((*hchanuser)->husr == husr) { @@ -338,6 +331,7 @@ void hchannels_dnmo(struct huser_struct *husr) break; } *hchanuser = tmp; + assert(*hchanuser != NULL); (*hchanuser)->next = NULL; if (on_desk(husr, huserchan)) { @@ -470,10 +464,17 @@ const char *hchannel_get_state(hchannel* hchan, int mask) int hchannel_highlight_detection(hchannel *hchan, const char *message) { char buffer[512], *buffer_ptr = buffer, *ptr = buffer; - int i = 0, matches = 0; + int i, matches = 0; strcpy(buffer, message); + /* remove commas */ + for (i=0;i<512 && buffer[i] != '\0';i++) + if (buffer[i] == ',') + buffer[i] = ' '; + + /* reset i for loop */ + i = 0; do { nick *tmp; @@ -483,9 +484,12 @@ int hchannel_highlight_detection(hchannel *hchan, const char *message) if (i++ > 6) break; - while (*buffer_ptr && isspace(*buffer)) + while (*buffer_ptr && isspace(*buffer_ptr)) buffer_ptr++; + if (*buffer_ptr == '@') + buffer_ptr++; + if (*buffer_ptr) { ptr = strchr(buffer_ptr, ' ');