diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-08-18 15:59:23 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-08-18 15:59:23 +0000 |
commit | d546725cb683f010b6090df78a54f6b943efd034 (patch) | |
tree | 53dc7e579f105c1d3d6a3bdef509b9a9ee29cffc | |
parent | 71b73c76bc0fb46a982a5d1611aa24e9b678b03c (diff) |
Move lowermap[] into a pre-initialised const array in hashcomp.h,
get rid of InspIRCd::MakeLowertab()
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4951 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | include/hashcomp.h | 18 | ||||
-rw-r--r-- | include/inspircd.h | 4 | ||||
-rw-r--r-- | src/hashcomp.cpp | 21 | ||||
-rw-r--r-- | src/inspircd.cpp | 25 | ||||
-rw-r--r-- | src/wildcard.cpp | 3 |
5 files changed, 21 insertions, 50 deletions
diff --git a/include/hashcomp.h b/include/hashcomp.h index 9ead61b6f..218f584e9 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -41,6 +41,24 @@ using irc::sockets::insp_aton; using irc::sockets::insp_ntoa; using irc::sockets::insp_inaddr; +#ifndef LOWERMAP +#define LOWERMAP +unsigned const char lowermap[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 +}; +#endif + /** Because of weirdness in g++, before 3.x this was namespace std. It's now __gnu_cxx. * This is a #define'd alias. */ diff --git a/include/inspircd.h b/include/inspircd.h index 77a1e45ac..44f5b519c 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -189,10 +189,6 @@ class InspIRCd : public classbase */ bool DaemonSeed(); - /** Build the upper/lowercase comparison table - */ - void MakeLowerMap(); - /** Moves the given module to the last slot in the list * @param modulename The module name to relocate */ diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index d4f9e53d6..f5cc5efe0 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -25,8 +25,6 @@ using namespace std; #define nspace __gnu_cxx -char lowermap[255]; - /****************************************************** * * The hash functions of InspIRCd are the centrepoint @@ -127,9 +125,7 @@ bool irc::InAddr_HashComp::operator()(const insp_inaddr &s1, const insp_inaddr & * std::string which is not only case-insensitive but * can also do scandanavian comparisons, e.g. { = [, etc. * - * This class depends on the global 'lowermap' which is - * initialized at startup by inspircd.cpp, and contains - * the 'scandanavian' casemappings for fast irc compare. + * This class depends on the const array 'lowermap'. * ******************************************************/ @@ -282,18 +278,3 @@ const std::string irc::commasepstream::GetToken() irc::commasepstream::~commasepstream() { } - -void InspIRCd::MakeLowerMap() -{ - // initialize the lowercase mapping table - for (unsigned char cn = 0; cn < 255; cn++) - lowermap[cn] = cn; - // lowercase the uppercase chars - for (unsigned char cn = 65; cn < 91; cn++) - lowermap[cn] = tolower(cn); - // now replace the specific chars for scandanavian comparison - lowermap[(unsigned char)'['] = '{'; - lowermap[(unsigned char)']'] = '}'; - lowermap[(unsigned char)'\\'] = '|'; -} - diff --git a/src/inspircd.cpp b/src/inspircd.cpp index e58e8039b..3fddb2d8b 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -54,8 +54,6 @@ using irc::sockets::insp_ntoa; using irc::sockets::insp_inaddr; using irc::sockets::insp_sockaddr; -char lowermap[255]; - InspIRCd* SI = NULL; void InspIRCd::AddServerName(const std::string &servername) @@ -240,9 +238,7 @@ InspIRCd::InspIRCd(int argc, char** argv) strlcpy(Config->MyExecutable,argv[0],MAXBUF); - this->MakeLowerMap(); - - OpenLog(argv, argc); + this->OpenLog(argv, argc); this->stats = new serverstats(); this->Parser = new CommandParser(this); this->Timers = new TimerManager(); @@ -281,10 +277,7 @@ InspIRCd::InspIRCd(int argc, char** argv) this->Res = new DNS(this); - this->Log(DEBUG,"RES: %08x",this->Res); - this->LoadAllModules(); - /* Just in case no modules were loaded - fix for bug #101 */ this->BuildISupport(); @@ -625,38 +618,22 @@ bool InspIRCd::LoadModule(const char* filename) for (unsigned int j = 0; j < Config->module_names.size(); j++) { if (modules[j]->Prioritize() == PRIORITY_LAST) - { put_to_back.push_back(Config->module_names[j]); - } else if (modules[j]->Prioritize() == PRIORITY_FIRST) - { put_to_front.push_back(Config->module_names[j]); - } else if ((modules[j]->Prioritize() & 0xFF) == PRIORITY_BEFORE) - { put_before[Config->module_names[j]] = Config->module_names[modules[j]->Prioritize() >> 8]; - } else if ((modules[j]->Prioritize() & 0xFF) == PRIORITY_AFTER) - { put_after[Config->module_names[j]] = Config->module_names[modules[j]->Prioritize() >> 8]; - } } for (unsigned int j = 0; j < put_to_back.size(); j++) - { MoveToLast(put_to_back[j]); - } for (unsigned int j = 0; j < put_to_front.size(); j++) - { MoveToFirst(put_to_front[j]); - } for (std::map<std::string,std::string>::iterator j = put_before.begin(); j != put_before.end(); j++) - { MoveBefore(j->first,j->second); - } for (std::map<std::string,std::string>::iterator j = put_after.begin(); j != put_after.end(); j++) - { MoveAfter(j->first,j->second); - } BuildISupport(); return true; } diff --git a/src/wildcard.cpp b/src/wildcard.cpp index 502dc89c3..b0602c82e 100644 --- a/src/wildcard.cpp +++ b/src/wildcard.cpp @@ -19,7 +19,7 @@ using namespace std; #include <string> #include "inspircd_config.h" #include "inspircd.h" - +#include "hashcomp.h" #include "inspstring.h" using irc::sockets::MatchCIDR; @@ -39,7 +39,6 @@ bool match(const char *str, const char *mask) unsigned char *cp, *mp; unsigned char* string = (unsigned char*)str; unsigned char* wild = (unsigned char*)mask; - extern char lowermap[255]; while ((*string) && (*wild != '*')) { |