summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-19 15:56:42 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-19 15:56:42 +0000
commit9cf56d917d92959701694477f7944d45ad2c38ed (patch)
treea379ee905e7485c2ee825790720ed2b69ba127d1 /src/modules/m_spanningtree
parent3bbb36695383badf5b3ba0ecba070f16094ae51d (diff)
Windows support. Tested and working to compile on freebsd and linux. Next step is to make sure it actually works in windows too. ;p. Add Burlex to contributors.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7043 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r--src/modules/m_spanningtree/main.cpp4
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp6
-rw-r--r--src/modules/m_spanningtree/treesocket2.cpp16
-rw-r--r--src/modules/m_spanningtree/utils.h4
4 files changed, 17 insertions, 13 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index d037b7101..50de7da64 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -37,7 +37,7 @@
/* $ModDep: m_spanningtree/timesynctimer.h m_spanningtree/resolvers.h m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/link.h m_spanningtree/treesocket.h m_spanningtree/rconnect.h */
ModuleSpanningTree::ModuleSpanningTree(InspIRCd* Me)
- : Module::Module(Me), max_local(0), max_global(0)
+ : Module(Me), max_local(0), max_global(0)
{
ServerInstance->UseInterface("InspSocketHook");
Utils = new SpanningTreeUtilities(Me, this);
@@ -1379,7 +1379,7 @@ class ModuleSpanningTreeFactory : public ModuleFactory
};
-extern "C" void * init_module( void )
+extern "C" DllExport void * init_module( void )
{
return new ModuleSpanningTreeFactory;
}
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index b858061cb..27737c7ff 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -294,12 +294,18 @@ std::string TreeSocket::RandString(unsigned int length)
{
char* randombuf = new char[length+1];
std::string out;
+#ifdef WINDOWS
+ int fd = -1;
+#else
int fd = open("/dev/urandom", O_RDONLY, 0);
+#endif
if (fd >= 0)
{
+#ifndef WINDOWS
read(fd, randombuf, length);
close(fd);
+#endif
}
else
{
diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp
index afba5b96a..da4dd5d4c 100644
--- a/src/modules/m_spanningtree/treesocket2.cpp
+++ b/src/modules/m_spanningtree/treesocket2.cpp
@@ -1496,19 +1496,13 @@ bool TreeSocket::ProcessLine(std::string &line)
{
strparams[q] = params[q].c_str();
}
- switch (this->Instance->CallCommandHandler(command.c_str(), strparams, params.size(), who))
+ if(!this->Instance->CallCommandHandler(command.c_str(), strparams, params.size(), who))
{
- case CMD_INVALID:
- this->SendError("Unrecognised command '"+std::string(command.c_str())+"' -- possibly loaded mismatched modules");
- return false;
- break;
- case CMD_FAILURE:
- return true;
- break;
- default:
- /* CMD_SUCCESS and CMD_USER_DELETED fall through here */
- break;
+ this->SendError("Unrecognised command '"+std::string(command.c_str())+"' -- possibly loaded mismatched modules");
+ return false;
}
+ else
+ return true;
}
else
{
diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h
index 1c94e264f..cb783a81a 100644
--- a/src/modules/m_spanningtree/utils.h
+++ b/src/modules/m_spanningtree/utils.h
@@ -29,7 +29,11 @@ class ModuleSpanningTree;
/* This hash_map holds the hash equivalent of the server
* tree, used for rapid linear lookups.
*/
+#ifdef WINDOWS
+typedef nspace::hash_map<std::string, TreeServer*, nspace::hash_compare<string, less<string> > > server_hash;
+#else
typedef nspace::hash_map<std::string, TreeServer*, nspace::hash<string>, irc::StrHashComp> server_hash;
+#endif
typedef std::map<TreeServer*,TreeServer*> TreeServerList;