summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-08-18 15:59:23 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-08-18 15:59:23 +0000
commitd546725cb683f010b6090df78a54f6b943efd034 (patch)
tree53dc7e579f105c1d3d6a3bdef509b9a9ee29cffc
parent71b73c76bc0fb46a982a5d1611aa24e9b678b03c (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.h18
-rw-r--r--include/inspircd.h4
-rw-r--r--src/hashcomp.cpp21
-rw-r--r--src/inspircd.cpp25
-rw-r--r--src/wildcard.cpp3
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 != '*'))
{