X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fchannels.cpp;h=dc42ea651e71035f8fd63cd56bd38a8f734b7df1;hb=84a19a9ab6129deb71cdc24b216b74dd8eb80978;hp=3f2eca3f5f85ff33e12594c9ff5667e94dec9a15;hpb=1948b0ac2804166261e4ad4d4b8722a4def84135;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/channels.cpp b/src/channels.cpp index 3f2eca3f5..dc42ea651 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -16,24 +16,14 @@ using namespace std; -#include "inspircd_config.h" -#include "inspircd.h" -#include "inspircd_io.h" -#include -#include -#include -#include -#include #include -#ifdef GCC3 -#include -#else -#include -#endif #include #include #include #include +#include "configreader.h" +#include "inspircd.h" +#include "hash_map.h" #include "users.h" #include "ctables.h" #include "globals.h" @@ -48,23 +38,14 @@ using namespace std; #include "helperfuncs.h" #include "typedefs.h" -#ifdef GCC3 -#define nspace __gnu_cxx -#else -#define nspace std -#endif - extern ServerConfig* Config; extern int MODCOUNT; extern std::vector modules; extern std::vector factory; -extern int WHOWAS_STALE; -extern int WHOWAS_MAX; extern time_t TIME; extern chan_hash chanlist; -using namespace std; chanrec* ForceChan(chanrec* Ptr,ucrec *a,userrec* user, int created); @@ -88,14 +69,18 @@ void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on) { log(DEBUG,"SetCustomModeParam called"); - std::map::iterator n = custom_mode_params.find(mode); + CustomModeList::iterator n = custom_mode_params.find(mode); if (mode_on) { - log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); if (n == custom_mode_params.end()) { custom_mode_params[mode] = strdup(parameter); + log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); + } + else + { + log(DEBUG, "Tried to set custom mode parameter for %c '%s' when it was already '%s'", mode, parameter, n->second); } } else @@ -125,7 +110,7 @@ std::string chanrec::GetModeParameter(char mode) } else { - std::map::iterator n = custom_mode_params.find(mode); + CustomModeList::iterator n = custom_mode_params.find(mode); if (n != custom_mode_params.end()) { return n->second; @@ -146,7 +131,8 @@ void chanrec::AddUser(userrec* user) unsigned long chanrec::DelUser(userrec* user) { - CUList::iterator a = internal_userlist.find(user); + CUListIter a = internal_userlist.find(user); + if (a != internal_userlist.end()) { internal_userlist.erase(a); @@ -154,8 +140,8 @@ unsigned long chanrec::DelUser(userrec* user) DelOppedUser(user); DelHalfoppedUser(user); DelVoicedUser(user); - return internal_userlist.size(); } + return internal_userlist.size(); } @@ -171,7 +157,7 @@ void chanrec::AddOppedUser(userrec* user) void chanrec::DelOppedUser(userrec* user) { - CUList::iterator a = internal_op_userlist.find(user); + CUListIter a = internal_op_userlist.find(user); if (a != internal_op_userlist.end()) { internal_op_userlist.erase(a); @@ -186,11 +172,11 @@ void chanrec::AddHalfoppedUser(userrec* user) void chanrec::DelHalfoppedUser(userrec* user) { - CUList::iterator a = internal_halfop_userlist.find(user); + CUListIter a = internal_halfop_userlist.find(user); + if (a != internal_halfop_userlist.end()) { internal_halfop_userlist.erase(a); - return; } } @@ -201,11 +187,11 @@ void chanrec::AddVoicedUser(userrec* user) void chanrec::DelVoicedUser(userrec* user) { - CUList::iterator a = internal_voice_userlist.find(user); + CUListIter a = internal_voice_userlist.find(user); + if (a != internal_voice_userlist.end()) { internal_voice_userlist.erase(a); - return; } } @@ -385,11 +371,11 @@ chanrec* add_channel(userrec *user, const char* cn, const char* key, bool overri log(DEBUG,"Passed channel checks"); - for (std::vector::const_iterator index = user->chans.begin(); index != user->chans.end(); index++) + for (UserChanList::const_iterator index = user->chans.begin(); index != user->chans.end(); index++) { - if ((ucrec*)(*index)->channel == NULL) + if ((*index)->channel == NULL) { - return ForceChan(Ptr,(ucrec*)(*index),user,created); + return ForceChan(Ptr, *index, user, created); } } @@ -643,14 +629,14 @@ void kick_channel(userrec *src,userrec *user, chanrec *Ptr, char* reason) FOREACH_MOD(I_OnUserKick,OnUserKick(src,user,Ptr,reason)); - for (std::vector::const_iterator i = user->chans.begin(); i != user->chans.end(); i++) + for (UserChanList::const_iterator i = user->chans.begin(); i != user->chans.end(); i++) { /* zap it from the channel list of the user */ - if ((((ucrec*)(*i))->channel) && (((ucrec*)(*i))->channel == Ptr)) + if ((*i)->channel && ((*i)->channel == Ptr)) { WriteChannel(Ptr,src,"KICK %s %s :%s",Ptr->name, user->nick, reason); - ((ucrec*)(*i))->uc_modes = 0; - ((ucrec*)(*i))->channel = NULL; + (*i)->uc_modes = 0; + (*i)->channel = NULL; log(DEBUG,"del_channel: unlinked: %s %s",user->nick,Ptr->name); break; } @@ -673,5 +659,3 @@ void kick_channel(userrec *src,userrec *user, chanrec *Ptr, char* reason) } } } - -