summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@drink-coca-cola.info>2010-05-10 17:55:23 -0400
committerAdam <Adam@anope.org>2010-06-18 21:01:17 -0400
commit631d11d6a81e8c5f63a19fc279606a61ab1a0563 (patch)
tree399d7591a669ce0d5cb4e8f9afe86352b1147281
parent4e1286ca109d079f32d32f07c344a1ab93899032 (diff)
Store a plaintext version of mode names in the mode structures, removes alot of unneeded code from db_plain/db_mysql.
-rw-r--r--include/modes.h85
-rw-r--r--src/core/db_plain.cpp187
-rw-r--r--src/modes.cpp29
-rw-r--r--src/modules/mysql/db_mysql.h46
-rw-r--r--src/modules/mysql/db_mysql_execute.cpp10
-rw-r--r--src/modules/mysql/db_mysql_read.cpp43
-rw-r--r--src/modules/mysql/db_mysql_write.cpp118
-rw-r--r--src/protocol/bahamut.c46
-rw-r--r--src/protocol/inspircd11.c74
-rw-r--r--src/protocol/inspircd12.cpp118
-rw-r--r--src/protocol/ratbox.c32
-rw-r--r--src/protocol/unreal32.c112
12 files changed, 446 insertions, 454 deletions
diff --git a/include/modes.h b/include/modes.h
index 452dbfdd1..622627774 100644
--- a/include/modes.h
+++ b/include/modes.h
@@ -76,9 +76,11 @@ enum ModeClass
*/
class CoreExport Mode
{
- public:
+ public:
/* Class of mode this is */
ModeClass Class;
+ /* The mode name, as a string */
+ const std::string NameAsString;
/* Mode char for this */
char ModeChar;
/* Type of mode this is */
@@ -86,10 +88,11 @@ class CoreExport Mode
/** Default constructor
* @param mClass The type of mode this is
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
* @param type The mode type
*/
- Mode(ModeClass mClass, char modeChar, ModeType type);
+ Mode(ModeClass mClass, const std::string &mNameAsString, char modeChar, ModeType type);
/** Default destructor
*/
@@ -100,16 +103,16 @@ class CoreExport Mode
*/
class CoreExport UserMode : public Mode
{
- public:
-
+ public:
/* Mode name */
UserModeName Name;
/** Default constructor
* @param nName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
- UserMode(UserModeName mName, char modeChar);
+ UserMode(UserModeName mName, const std::string &mNameAsString, char modeChar);
/** Default destructor
*/
@@ -121,9 +124,10 @@ class UserModeParam : public UserMode
public:
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
- UserModeParam(UserModeName mName, char modeChar);
+ UserModeParam(UserModeName mName, const std::string &mNameAsString, char modeChar);
/** Check if the param is valid
* @param value The param
@@ -136,16 +140,16 @@ class UserModeParam : public UserMode
*/
class CoreExport ChannelMode : public Mode
{
- public:
-
+ public:
/* Mode name */
ChannelModeName Name;
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
- ChannelMode(ChannelModeName mName, char modeChar);
+ ChannelMode(ChannelModeName mName, const std::string &mNameAsString, char modeChar);
/** Default destructor
*/
@@ -163,13 +167,13 @@ class CoreExport ChannelMode : public Mode
*/
class CoreExport ChannelModeList : public ChannelMode
{
- public:
-
+ public:
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
- ChannelModeList(ChannelModeName mName, char modeChar);
+ ChannelModeList(ChannelModeName mName, const std::string &mNameAsString, char modeChar);
/** Default destructor
*/
@@ -199,14 +203,14 @@ class CoreExport ChannelModeList : public ChannelMode
*/
class CoreExport ChannelModeParam : public ChannelMode
{
- public:
-
+ public:
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
* @param MinusArg true if this mode sends no arg when unsetting
*/
- ChannelModeParam(ChannelModeName mName, char modeChar, bool MinusArg = false);
+ ChannelModeParam(ChannelModeName mName, const std::string &mNameAsString, char modeChar, bool MinusArg = false);
/** Default destructor
*/
@@ -226,16 +230,17 @@ class CoreExport ChannelModeParam : public ChannelMode
*/
class CoreExport ChannelModeStatus : public ChannelMode
{
- public:
+ public:
/* The symbol, eg @ % + */
char Symbol;
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
* @param mSymbol The symbol for the mode, eg @ % +
*/
- ChannelModeStatus(ChannelModeName mName, char modeChar, char mSymbol);
+ ChannelModeStatus(ChannelModeName mName, const std::string &mNameAsString, char modeChar, char mSymbol);
/** Default destructor
*/
@@ -246,8 +251,8 @@ class CoreExport ChannelModeStatus : public ChannelMode
*/
class CoreExport ChannelModeBan : public ChannelModeList
{
- public:
- ChannelModeBan(char modeChar) : ChannelModeList(CMODE_BAN, modeChar) { }
+ public:
+ ChannelModeBan(char modeChar) : ChannelModeList(CMODE_BAN, "CMODE_BAN", modeChar) { }
void AddMask(Channel *chan, const char *mask);
@@ -258,8 +263,8 @@ class CoreExport ChannelModeBan : public ChannelModeList
*/
class CoreExport ChannelModeExcept : public ChannelModeList
{
- public:
- ChannelModeExcept(char modeChar) : ChannelModeList(CMODE_EXCEPT, modeChar) { }
+ public:
+ ChannelModeExcept(char modeChar) : ChannelModeList(CMODE_EXCEPT, "CMODE_EXCEPT", modeChar) { }
void AddMask(Channel *chan, const char *mask);
@@ -270,8 +275,8 @@ class CoreExport ChannelModeExcept : public ChannelModeList
*/
class CoreExport ChannelModeInvite : public ChannelModeList
{
- public:
- ChannelModeInvite(char modeChar) : ChannelModeList(CMODE_INVITEOVERRIDE, modeChar) { }
+ public:
+ ChannelModeInvite(char modeChar) : ChannelModeList(CMODE_INVITEOVERRIDE, "CMODE_INVITEOVERRIDE", modeChar) { }
void AddMask(Channel *chan, const char *mask);
@@ -283,8 +288,8 @@ class CoreExport ChannelModeInvite : public ChannelModeList
*/
class CoreExport ChannelModeKey : public ChannelModeParam
{
- public:
- ChannelModeKey(char modeChar) : ChannelModeParam(CMODE_KEY, modeChar) { }
+ public:
+ ChannelModeKey(char modeChar) : ChannelModeParam(CMODE_KEY, "CMODE_KEY", modeChar) { }
bool IsValid(const std::string &value);
};
@@ -293,8 +298,8 @@ class CoreExport ChannelModeKey : public ChannelModeParam
*/
class ChannelModeFlood : public ChannelModeParam
{
- public:
- ChannelModeFlood(char modeChar, bool minusNoArg = false) : ChannelModeParam(CMODE_FLOOD, modeChar, minusNoArg) { }
+ public:
+ ChannelModeFlood(char modeChar, bool minusNoArg = false) : ChannelModeParam(CMODE_FLOOD, "CMODE_FLOOD", modeChar, minusNoArg) { }
bool IsValid(const std::string &value);
};
@@ -304,8 +309,8 @@ class ChannelModeFlood : public ChannelModeParam
*/
class CoreExport ChannelModeAdmin : public ChannelMode
{
- public:
- ChannelModeAdmin(char modeChar) : ChannelMode(CMODE_ADMINONLY, modeChar) { }
+ public:
+ ChannelModeAdmin(char modeChar) : ChannelMode(CMODE_ADMINONLY, "CMODE_ADMINONLY", modeChar) { }
/* Opers only */
bool CanSet(User *u);
@@ -316,8 +321,8 @@ class CoreExport ChannelModeAdmin : public ChannelMode
*/
class CoreExport ChannelModeOper : public ChannelMode
{
- public:
- ChannelModeOper(char modeChar) : ChannelMode(CMODE_OPERONLY, modeChar) { }
+ public:
+ ChannelModeOper(char modeChar) : ChannelMode(CMODE_OPERONLY, "CMODE_OPERONLY", modeChar) { }
/* Opers only */
bool CanSet(User *u);
@@ -328,8 +333,8 @@ class CoreExport ChannelModeOper : public ChannelMode
*/
class CoreExport ChannelModeRegistered : public ChannelMode
{
- public:
- ChannelModeRegistered(char modeChar) : ChannelMode(CMODE_REGISTERED, modeChar) { }
+ public:
+ ChannelModeRegistered(char modeChar) : ChannelMode(CMODE_REGISTERED, "CMODE_REGISTERED", modeChar) { }
/* No one mlocks +r */
bool CanSet(User *u);
@@ -369,7 +374,7 @@ class StackerInfo
*/
class CoreExport ModeManager
{
- protected:
+ protected:
/* List of pairs of user/channels and their stacker info */
static std::list<std::pair<void *, StackerInfo *> > StackerObjects;
@@ -413,7 +418,10 @@ class CoreExport ModeManager
*/
static void StackerAddInternal(BotInfo *bi, void *Object, void *Mode, bool Set, const std::string &Param, StackerType Type);
- public:
+ public:
+ /* List of all modes Anope knows about */
+ static std::list<Mode *> Modes;
+
/* User modes */
static std::map<char, UserMode *> UserModesByChar;
static std::map<UserModeName, UserMode *> UserModesByName;
@@ -421,11 +429,8 @@ class CoreExport ModeManager
static std::map<char, ChannelMode *> ChannelModesByChar;
static std::map<ChannelModeName, ChannelMode *> ChannelModesByName;
/* Although there are two different maps for UserModes and ChannelModes
- * the pointers in each are the same. This is used to increase
- * efficiency.
- */
- /* List of all modes Anope knows about */
- static std::list<Mode *> Modes;
+ * the pointers in each are the same. This is used to increase efficiency.
+ */
/** Add a user mode to Anope
* @param um A UserMode or UserMode derived class
diff --git a/src/core/db_plain.cpp b/src/core/db_plain.cpp
index 0ae6c47f8..21164584f 100644
--- a/src/core/db_plain.cpp
+++ b/src/core/db_plain.cpp
@@ -39,7 +39,6 @@ static const char endl = '\n';
*/
static void ReadDatabase(Module *m = NULL)
{
- std::string buf;
EventReturn MOD_RESULT;
MDType Type = MD_NONE;
@@ -56,6 +55,7 @@ static void ReadDatabase(Module *m = NULL)
BotInfo *bi = NULL;
ChannelInfo *ci = NULL;
+ std::string buf;
while (std::getline(db, buf))
{
if (buf.empty())
@@ -87,7 +87,6 @@ static void ReadDatabase(Module *m = NULL)
if (MOD_RESULT == EVENT_STOP)
continue;
- std::string mdbuf;
if (!params.empty())
{
if (params[0] == "NC")
@@ -198,12 +197,6 @@ struct LangInfo
int LanguageId;
};
-struct ChannelModeInfo
-{
- std::string Name;
- ChannelModeName Value;
-};
-
struct ChannelFlagInfo
{
std::string Name;
@@ -245,42 +238,6 @@ LangInfo LangInfos[] = {
{"", -1}
};
-ChannelModeInfo ChannelModes[] = {
- {"CMODE_BLOCKCOLOR", CMODE_BLOCKCOLOR},
- {"CMODE_FLOOD", CMODE_FLOOD},
- {"CMODE_INVITE", CMODE_INVITE},
- {"CMODE_KEY", CMODE_KEY},
- {"CMODE_LIMIT", CMODE_LIMIT},
- {"CMODE_MODERATED", CMODE_MODERATED},
- {"CMODE_NOEXTERNAL", CMODE_NOEXTERNAL},
- {"CMODE_PRIVATE", CMODE_PRIVATE},
- {"CMODE_REGISTERED", CMODE_REGISTERED},
- {"CMODE_SECRET", CMODE_SECRET},
- {"CMODE_TOPIC", CMODE_TOPIC},
- {"CMODE_AUDITORIUM", CMODE_AUDITORIUM},
- {"CMODE_SSL", CMODE_SSL},
- {"CMODE_ADMINONLY", CMODE_ADMINONLY},
- {"CMODE_NOCTCP", CMODE_NOCTCP},
- {"CMODE_FILTER", CMODE_FILTER},
- {"CMODE_NOKNOCK", CMODE_NOKNOCK},
- {"CMODE_REDIRECT", CMODE_REDIRECT},
- {"CMODE_REGMODERATED", CMODE_REGMODERATED},
- {"CMODE_NONICK", CMODE_NONICK},
- {"CMODE_OPERONLY", CMODE_OPERONLY},
- {"CMODE_NONICK", CMODE_NONICK},
- {"CMODE_REGISTEREDONLY", CMODE_REGISTEREDONLY},
- {"CMODE_STRIPCOLOR", CMODE_STRIPCOLOR},
- {"CMODE_NONOTICE", CMODE_NONOTICE},
- {"CMODE_NOINVITE", CMODE_NOINVITE},
- {"CMODE_ALLINVITE", CMODE_ALLINVITE},
- {"CMODE_BLOCKCAPS", CMODE_BLOCKCAPS},
- {"CMODE_PERM", CMODE_PERM},
- {"CMODE_NICKFLOOD", CMODE_NICKFLOOD},
- {"CMODE_JOINFLOOD", CMODE_JOINFLOOD},
- {"CMODE_NOREJOIN", CMODE_NOREJOIN},
- {"", static_cast<ChannelModeName>(-1)}
-};
-
ChannelFlagInfo ChannelInfoFlags[] = {
{"KEEPTOPIC", CI_KEEPTOPIC},
{"SECUREOPS", CI_SECUREOPS},
@@ -740,8 +697,6 @@ class DBPlain : public Module
EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const std::string &key, const std::vector<std::string> &params)
{
- int i;
-
if (key == "FOUNDER")
{
ci->founder = findcore(params[0].c_str());
@@ -757,14 +712,14 @@ class DBPlain : public Module
else if (key == "LEVELS")
{
for (unsigned j = 0; j < params.size(); ++j, ++j)
- for (i = 0; ChannelLevels[i].Level != -1; ++i)
+ for (int i = 0; ChannelLevels[i].Level != -1; ++i)
if (ChannelLevels[i].Name == params[j])
ci->levels[ChannelLevels[i].Level] = atoi(params[j + 1].c_str());
}
else if (key == "FLAGS")
{
for (unsigned j = 0; j < params.size(); ++j)
- for (i = 0; ChannelInfoFlags[i].Flag != -1; ++i)
+ for (int i = 0; ChannelInfoFlags[i].Flag != -1; ++i)
if (ChannelInfoFlags[i].Name == params[j])
ci->SetFlag(ChannelInfoFlags[i].Flag);
}
@@ -830,16 +785,38 @@ class DBPlain : public Module
bool Set = key == "MLOCK_ON" ? true : false;
for (unsigned j = 0; j < params.size(); ++j)
- for (i = 0; ChannelModes[i].Value != -1; ++i)
- if (ChannelModes[i].Name == params[j])
- ci->SetMLock(ChannelModes[i].Value, Set);
+ {
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
+ {
+ if ((*it)->Class == MC_CHANNEL)
+ {
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
+
+ if (cm->NameAsString == params[j])
+ {
+ ci->SetMLock(cm->Name, Set);
+ }
+ }
+ }
+ }
}
else if (key == "MLP")
{
for (unsigned j = 0; j < params.size(); ++j, ++j)
- for (i = 0; ChannelModes[i].Value != -1; ++i)
- if (ChannelModes[i].Name == params[j])
- ci->SetMLock(ChannelModes[i].Value, true, params[j + 1]);
+ {
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
+ {
+ if ((*it)->Class == MC_CHANNEL)
+ {
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
+
+ if (cm->NameAsString == params[j])
+ {
+ ci->SetMLock(cm->Name, true, params[j + 1]);
+ }
+ }
+ }
+ }
}
else if (key == "MI")
{
@@ -868,7 +845,7 @@ class DBPlain : public Module
else if (params[0] == "FLAGS")
{
for (unsigned j = 1; j < params.size(); ++j)
- for (i = 0; BotFlags[i].Flag != -1; ++i)
+ for (int i = 0; BotFlags[i].Flag != -1; ++i)
if (BotFlags[i].Name == params[j])
ci->botflags.SetFlag(BotFlags[i].Flag);
}
@@ -936,10 +913,7 @@ class DBPlain : public Module
db << "VER 1" << endl;
- int i, j;
- unsigned k;
-
- for (i = 0; i < 1024; ++i)
+ for (int i = 0; i < 1024; ++i)
{
for (NickRequest *nr = nrlists[i]; nr; nr = nr->next)
{
@@ -947,10 +921,9 @@ class DBPlain : public Module
}
}
- NickCore *nc;
- for (i = 0; i < 1024; ++i)
+ for (int i = 0; i < 1024; ++i)
{
- for (nc = nclists[i]; nc; nc = nc->next)
+ for (NickCore *nc = nclists[i]; nc; nc = nc->next)
{
if (nc->HasFlag(NI_FORBIDDEN))
{
@@ -963,7 +936,7 @@ class DBPlain : public Module
{
db << "NC " << nc->display << " " << nc->pass << " ";
}
- for (j = 0; LangInfos[j].LanguageId != -1; ++j)
+ for (int j = 0; LangInfos[j].LanguageId != -1; ++j)
if (nc->language == LangInfos[j].LanguageId)
db << LangInfos[j].Name;
db << " " << nc->memos.memomax << " " << nc->channelcount << endl;
@@ -984,7 +957,7 @@ class DBPlain : public Module
if (nc->FlagCount())
{
db << "MD FLAGS";
- for (j = 0; NickCoreFlags[j].Flag != -1; ++j)
+ for (int j = 0; NickCoreFlags[j].Flag != -1; ++j)
if (nc->HasFlag(NickCoreFlags[j].Flag))
db << " " << NickCoreFlags[j].Name;
db << endl;
@@ -992,7 +965,7 @@ class DBPlain : public Module
if (!nc->memos.memos.empty())
{
MemoInfo *mi = &nc->memos;
- for (k = 0; k < mi->memos.size(); ++k)
+ for (unsigned k = 0; k < mi->memos.size(); ++k)
{
db << "MD MI " << mi->memos[k]->number << " " << mi->memos[k]->time << " " << mi->memos[k]->sender;
if (mi->memos[k]->HasFlag(MF_UNREAD))
@@ -1010,10 +983,9 @@ class DBPlain : public Module
}
}
- NickAlias *na;
- for (i = 0; i < 1024; ++i)
+ for (int i = 0; i < 1024; ++i)
{
- for (na = nalists[i]; na; na = na->next)
+ for (NickAlias *na = nalists[i]; na; na = na->next)
{
db << "NA " << na->nc->display << " " << na->nick << " " << na->time_registered << " " << na->last_seen << endl;
if (na->last_usermask)
@@ -1035,10 +1007,9 @@ class DBPlain : public Module
}
}
- BotInfo *bi;
- for (i = 0; i < 256; ++i)
+ for (int i = 0; i < 256; ++i)
{
- for (bi = botlists[i]; bi; bi = bi->next)
+ for (BotInfo *bi = botlists[i]; bi; bi = bi->next)
{
db << "BI " << bi->nick << " " << bi->user << " " << bi->host << " " << bi->created << " " << bi->chancount << " :" << bi->real << endl;
if (bi->FlagCount())
@@ -1067,10 +1038,9 @@ class DBPlain : public Module
}
}
- ChannelInfo *ci;
- for (i = 0; i < 256; ++i)
+ for (int i = 0; i < 256; ++i)
{
- for (ci = chanlists[i]; ci; ci = ci->next)
+ for (ChannelInfo *ci = chanlists[i]; ci; ci = ci->next)
{
db << "CH " << ci->name << " " << ci->time_registered << " " << ci->last_used;
db << " " << ci->bantype << " " << ci->memos.memomax << endl;
@@ -1087,24 +1057,24 @@ class DBPlain : public Module
if (ci->last_topic)
db << "MD TOPIC " << ci->last_topic_setter << " " << ci->last_topic_time << " :" << ci->last_topic << endl;
db << "MD LEVELS";
- for (j = 0; ChannelLevels[j].Level != -1; ++j)
+ for (int j = 0; ChannelLevels[j].Level != -1; ++j)
db << " " << ChannelLevels[j].Name << " " << ci->levels[ChannelLevels[j].Level];
db << endl;
if (ci->FlagCount())
{
db << "MD FLAGS";
- for (j = 0; ChannelInfoFlags[j].Flag != -1; ++j)
+ for (int j = 0; ChannelInfoFlags[j].Flag != -1; ++j)
if (ci->HasFlag(ChannelInfoFlags[j].Flag))
db << " " << ChannelInfoFlags[j].Name;
db << endl;
if (ci->HasFlag(CI_FORBIDDEN))
db << "MD FORBID " << ci->forbidby << " :" << ci->forbidreason << endl;
}
- for (k = 0; k < ci->GetAccessCount(); ++k)
+ for (unsigned k = 0; k < ci->GetAccessCount(); ++k)
if (ci->GetAccess(k)->in_use)
db << "MD ACCESS " << ci->GetAccess(k)->nc->display << " " << ci->GetAccess(k)->level << " "
<< ci->GetAccess(k)->last_seen << " " << ci->GetAccess(k)->creator << endl;
- for (k = 0; k < ci->GetAkickCount(); ++k)
+ for (unsigned k = 0; k < ci->GetAkickCount(); ++k)
{
db << "MD AKICK "
<< (ci->GetAkick(k)->HasFlag(AK_STUCK) ? "STUCK " : "UNSTUCK ")
@@ -1119,28 +1089,55 @@ class DBPlain : public Module
if (ci->GetMLockCount(true))
{
db << "MD MLOCK_ON";
- for (j = 0; ChannelModes[j].Value != -1; ++j)
- if (ci->HasMLock(ChannelModes[j].Value, true))
- db << " " << ChannelModes[j].Name;
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
+ {
+ if ((*it)->Class == MC_CHANNEL)
+ {
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
+
+ if (ci->HasMLock(cm->Name, true))
+ {
+ db << " " << cm->NameAsString;
+ }
+ }
+ }
db << endl;
}
if (ci->GetMLockCount(false))
{
db << "MD MLOCK_OFF";
- for (j = 0; ChannelModes[j].Value != -1; ++j)
- if (ci->HasMLock(ChannelModes[j].Value, false))
- db << " " << ChannelModes[j].Name;
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
+ {
+ if ((*it)->Class == MC_CHANNEL)
+ {
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
+
+ if (ci->HasMLock(cm->Name, false))
+ {
+ db << " " << cm->NameAsString;
+ }
+ }
+ }
db << endl;
}
std::string Param;
- for (j = 0; ChannelModes[j].Value != -1; ++j)
- if (ci->GetParam(ChannelModes[j].Value, Param))
- db << "MD MLP " << ChannelModes[j].Name << " " << Param << endl;
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
+ {
+ if ((*it)->Class == MC_CHANNEL)
+ {
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
+
+ if (ci->GetParam(cm->Name, Param))
+ {
+ db << "MD MLP " << cm->NameAsString << " " << Param << endl;
+ }
+ }
+ }
if (!ci->memos.memos.empty())
{
MemoInfo *memos = &ci->memos;
- for (k = 0; k < memos->memos.size(); ++k)
+ for (unsigned k = 0; k < memos->memos.size(); ++k)
{
db << "MD MI " << memos->memos[k]->number << " " << memos->memos[k]->time << " " << memos->memos[k]->sender;
if (memos->memos[k]->HasFlag(MF_UNREAD))
@@ -1159,7 +1156,7 @@ class DBPlain : public Module
if (ci->botflags.FlagCount())
{
db << "MD BI FLAGS";
- for (j = 0; BotFlags[j].Flag != -1; ++j)
+ for (int j = 0; BotFlags[j].Flag != -1; ++j)
if (ci->botflags.HasFlag(BotFlags[j].Flag))
db << " " << BotFlags[j].Name;
db << endl;
@@ -1175,7 +1172,7 @@ class DBPlain : public Module
db << "MD BI FLOODSECS " << ci->floodsecs << endl;
if (ci->repeattimes)
db << "MD BI REPEATTIMES " << ci->repeattimes << endl;
- for (k = 0; k < ci->GetBadWordCount(); ++k)
+ for (unsigned k = 0; k < ci->GetBadWordCount(); ++k)
db << "MD BI BADWORD "
<< (ci->GetBadWord(k)->type == BW_ANY ? "ANY " : "")
<< (ci->GetBadWord(k)->type == BW_SINGLE ? "SINGLE " : "")
@@ -1187,7 +1184,7 @@ class DBPlain : public Module
}
}
- for (i = 0; i < akills.count; ++i)
+ for (int i = 0; i < akills.count; ++i)
{
Akill *ak = static_cast<Akill *>(akills.list[i]);
db << "OS AKILL " << ak->user << " " << ak->host << " " << ak->by << " " << ak->seton << " " << ak->expires << " :" << ak->reason << endl;
@@ -1195,23 +1192,23 @@ class DBPlain : public Module
db << "OS STATS " << maxusercnt << " " << maxusertime << endl;
SXLine *sx;
- for (i = 0; i < sglines.count; ++i)
+ for (int i = 0; i < sglines.count; ++i)
{
sx = static_cast<SXLine *>(sglines.list[i]);
db << "OS SGLINE " << sx->mask << " " << sx->by << " " << sx->seton << " " << sx->expires << " :" << sx->reason << endl;
}
- for (i = 0; i < sqlines.count; ++i)
+ for (int i = 0; i < sqlines.count; ++i)
{
sx = static_cast<SXLine *>(sqlines.list[i]);
db << "OS SQLINE " << sx->mask << " " << sx->by << " " << sx->seton << " " << sx->expires << " :" << sx->reason << endl;
}
- for (i = 0; i < szlines.count; ++i)
+ for (int i = 0; i < szlines.count; ++i)
{
sx = static_cast<SXLine *>(szlines.list[i]);
db << "OS SZLINE " << sx->mask << " " << sx->by << " " << sx->seton << " " << sx->expires << " :" << sx->reason << endl;
}
- for (i = 0; i < nexceptions; i++)
+ for (int i = 0; i < nexceptions; i++)
{
db << "OS EXCEPTION " << exceptions[i].mask << " " << exceptions[i].limit << " " << exceptions[i].who << " " << exceptions[i].time << " " << exceptions[i].expires << " " << exceptions[i].reason << endl;
}
diff --git a/src/modes.cpp b/src/modes.cpp
index 1685eea86..1e725cf7f 100644
--- a/src/modes.cpp
+++ b/src/modes.cpp
@@ -14,6 +14,9 @@
/* List of pairs of user/channels and their stacker info */
std::list<std::pair<void *, StackerInfo *> > ModeManager::StackerObjects;
+/* List of all modes Anope knows about */
+std::list<Mode *> ModeManager::Modes;
+
/* User modes */
std::map<char, UserMode *> ModeManager::UserModesByChar;
std::map<UserModeName, UserMode *> ModeManager::UserModesByName;
@@ -21,11 +24,8 @@ std::map<UserModeName, UserMode *> ModeManager::UserModesByName;
std::map<char, ChannelMode *> ModeManager::ChannelModesByChar;
std::map<ChannelModeName, ChannelMode *> ModeManager::ChannelModesByName;
/* Although there are two different maps for UserModes and ChannelModes
- * the pointers in each are the same. This is used to increase
- * efficiency.
+ * the pointers in each are the same. This is used to increase efficiency.
*/
-/* List of all modes Anope knows about */
-std::list<Mode *> ModeManager::Modes;
/* Number of generic modes we support */
unsigned GenericChannelModes = 0, GenericUserModes = 0;
@@ -99,10 +99,11 @@ void SetDefaultMLock()
/** Default constructor
* @param mClass The type of mode this is
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
* @param modeType The mode type
*/
-Mode::Mode(ModeClass mClass, char modeChar, ModeType modeType) : Class(mClass), ModeChar(modeChar), Type(modeType)
+Mode::Mode(ModeClass mClass, const std::string &mNameAsString, char modeChar, ModeType modeType) : Class(mClass), NameAsString(mNameAsString), ModeChar(modeChar), Type(modeType)
{
}
@@ -114,9 +115,10 @@ Mode::~Mode()
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
-UserMode::UserMode(UserModeName mName, char modeChar) : Mode(MC_USER, modeChar, MODE_REGULAR), Name(mName)
+UserMode::UserMode(UserModeName mName, const std::string &mNameAsString, char modeChar) : Mode(MC_USER, mNameAsString, modeChar, MODE_REGULAR), Name(mName)
{
}
@@ -128,18 +130,20 @@ UserMode::~UserMode()
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
-UserModeParam::UserModeParam(UserModeName mName, char modeChar) : UserMode(mName, modeChar)
+UserModeParam::UserModeParam(UserModeName mName, const std::string &mNameAsString, char modeChar) : UserMode(mName, mNameAsString, modeChar)
{
this->Type = MODE_PARAM;
}
/** Default constrcutor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
-ChannelMode::ChannelMode(ChannelModeName mName, char modeChar) : Mode(MC_CHANNEL, modeChar, MODE_REGULAR), Name(mName)
+ChannelMode::ChannelMode(ChannelModeName mName, const std::string &mNameAsString, char modeChar) : Mode(MC_CHANNEL, mNameAsString, modeChar, MODE_REGULAR), Name(mName)
{
}
@@ -151,9 +155,10 @@ ChannelMode::~ChannelMode()
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
*/
-ChannelModeList::ChannelModeList(ChannelModeName mName, char modeChar) : ChannelMode(mName, modeChar)
+ChannelModeList::ChannelModeList(ChannelModeName mName, const std::string &mNameAsString, char modeChar) : ChannelMode(mName, mNameAsString, modeChar)
{
this->Type = MODE_LIST;
}
@@ -166,10 +171,11 @@ ChannelModeList::~ChannelModeList()
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
* @param MinusArg true if the mode sends no arg when unsetting
*/
-ChannelModeParam::ChannelModeParam(ChannelModeName mName, char modeChar, bool MinusArg) : ChannelMode(mName, modeChar), MinusNoArg(MinusArg)
+ChannelModeParam::ChannelModeParam(ChannelModeName mName, const std::string &mNameAsString, char modeChar, bool MinusArg) : ChannelMode(mName, mNameAsString, modeChar), MinusNoArg(MinusArg)
{
this->Type = MODE_PARAM;
}
@@ -182,10 +188,11 @@ ChannelModeParam::~ChannelModeParam()
/** Default constructor
* @param mName The mode name
+ * @param mNameAsString The mode name as a string
* @param modeChar The mode char
* @param mSymbol The symbol for the mode, eg @ % +
*/
-ChannelModeStatus::ChannelModeStatus(ChannelModeName mName, char modeChar, char mSymbol) : ChannelMode(mName, modeChar), Symbol(mSymbol)
+ChannelModeStatus::ChannelModeStatus(ChannelModeName mName, const std::string &mNameAsString, char modeChar, char mSymbol) : ChannelMode(mName, mNameAsString, modeChar), Symbol(mSymbol)
{
this->Type = MODE_STATUS;
}
diff --git a/src/modules/mysql/db_mysql.h b/src/modules/mysql/db_mysql.h
index b62f52524..12956262a 100644
--- a/src/modules/mysql/db_mysql.h
+++ b/src/modules/mysql/db_mysql.h
@@ -39,48 +39,6 @@ NickCoreFlagInfo NickCoreFlags[] = {
{"", static_cast<NickCoreFlag>(-1)}
};
-struct ChannelModeInfo
-{
- std::string Name;
- ChannelModeName Mode;
-};
-
-ChannelModeInfo ChannelModes[] = {
- {"CMODE_BLOCKCOLOR", CMODE_BLOCKCOLOR},
- {"CMODE_FLOOD", CMODE_FLOOD},
- {"CMODE_INVITE", CMODE_INVITE},
- {"CMODE_KEY", CMODE_KEY},
- {"CMODE_LIMIT", CMODE_LIMIT},
- {"CMODE_MODERATED", CMODE_MODERATED},
- {"CMODE_NOEXTERNAL", CMODE_NOEXTERNAL},
- {"CMODE_PRIVATE", CMODE_PRIVATE},
- {"CMODE_REGISTERED", CMODE_REGISTERED},
- {"CMODE_SECRET", CMODE_SECRET},
- {"CMODE_TOPIC", CMODE_TOPIC},
- {"CMODE_AUDITORIUM", CMODE_AUDITORIUM},
- {"CMODE_SSL", CMODE_SSL},
- {"CMODE_ADMINONLY", CMODE_ADMINONLY},
- {"CMODE_NOCTCP", CMODE_NOCTCP},
- {"CMODE_FILTER", CMODE_FILTER},
- {"CMODE_NOKNOCK", CMODE_NOKNOCK},
- {"CMODE_REDIRECT", CMODE_REDIRECT},
- {"CMODE_REGMODERATED", CMODE_REGMODERATED},
- {"CMODE_NONICK", CMODE_NONICK},
- {"CMODE_OPERONLY", CMODE_OPERONLY},
- {"CMODE_NONICK", CMODE_NONICK},
- {"CMODE_REGISTEREDONLY", CMODE_REGISTEREDONLY},
- {"CMODE_STRIPCOLOR", CMODE_STRIPCOLOR},
- {"CMODE_NONOTICE", CMODE_NONOTICE},
- {"CMODE_NOINVITE", CMODE_NOINVITE},
- {"CMODE_ALLINVITE", CMODE_ALLINVITE},
- {"CMODE_BLOCKCAPS", CMODE_BLOCKCAPS},
- {"CMODE_PERM", CMODE_PERM},
- {"CMODE_NICKFLOOD", CMODE_NICKFLOOD},
- {"CMODE_JOINFLOOD", CMODE_JOINFLOOD},
- {"CMODE_NOREJOIN", CMODE_NOREJOIN},
- {"", static_cast<ChannelModeName>(-1)}
-};
-
struct BotFlagInfo
{
std::string Name;
@@ -169,7 +127,7 @@ MemoFlagInfo MemoFlags[] = {
inline std::string SQLAssign(const mysqlpp::String& s) { return s.c_str(); }
class DBMySQL;
-static DBMySQL *Me;
+static DBMySQL *me;
bool ExecuteQuery(mysqlpp::Query& query)
{
@@ -226,7 +184,7 @@ class DBMySQL : public Module
DBMySQL(const std::string &modname, const std::string &creator) : Module(modname, creator)
{
- Me = this;
+ me = this;
this->SetAuthor("Anope");
this->SetVersion(VERSION_STRING);
diff --git a/src/modules/mysql/db_mysql_execute.cpp b/src/modules/mysql/db_mysql_execute.cpp
index 0c7c4de65..3933d54d1 100644
--- a/src/modules/mysql/db_mysql_execute.cpp
+++ b/src/modules/mysql/db_mysql_execute.cpp
@@ -37,7 +37,7 @@ class FakeUser : public User
this->realname = sstrdup("Fake SQL User");
this->hostip = sstrdup("255.255.255.255");
this->vhost = NULL;
- this->server = serv_uplink; // XXX Need a good way to set this to ourself
+ this->server = Me;
if (this->prev)
this->prev->next = this->next;
@@ -50,8 +50,6 @@ class FakeUser : public User
~FakeUser()
{
- this->server = serv_uplink; // XXX Need a good way to set this to ourself
-
User **list = &userlist[HASH(this->nick.c_str())];
this->next = *list;
if (*list)
@@ -73,16 +71,16 @@ class FakeUser : public User
class SQLTimer : public Timer
{
public:
- SQLTimer() : Timer(Me->Delay, time(NULL), true)
+ SQLTimer() : Timer(me->Delay, time(NULL), true)
{
- mysqlpp::Query query(Me->Con);
+ mysqlpp::Query query(me->Con);
query << "TRUNCATE TABLE `anope_commands`";
ExecuteQuery(query);
}
void Tick(time_t)
{
- mysqlpp::Query query(Me->Con);
+ mysqlpp::Query query(me->Con);
mysqlpp::StoreQueryResult qres;
query << "SELECT * FROM `anope_commands`";
diff --git a/src/modules/mysql/db_mysql_read.cpp b/src/modules/mysql/db_mysql_read.cpp
index 5c498b008..728e4b882 100644
--- a/src/modules/mysql/db_mysql_read.cpp
+++ b/src/modules/mysql/db_mysql_read.cpp
@@ -27,7 +27,7 @@ static std::vector<std::string> MakeVector(std::string buf)
static void LoadDatabase()
{
- mysqlpp::Query query(Me->Con);
+ mysqlpp::Query query(me->Con);
mysqlpp::StoreQueryResult qres;
query << "SELECT * FROM `anope_ns_core`";
@@ -270,12 +270,17 @@ static void LoadDatabase()
spacesepstream sep(SQLAssign(qres[i]["mlock_on"]));
while (sep.GetToken(buf))
{
- for (int j = 0; ChannelModes[j].Mode != -1; ++j)
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
{
- if (buf == ChannelModes[j].Name)
+ if ((*it)->Class == MC_CHANNEL)
{
- ci->SetMLock(ChannelModes[j].Mode, true);
- break;
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
+
+ if (buf == cm->NameAsString)
+ {
+ ci->SetMLock(cm->Name, true);
+ break;
+