]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/dynamic.cpp
Removed some debug notices that were mistakenly in the DEFAULT loglevel
[user/henk/code/inspircd.git] / src / dynamic.cpp
index 73edf4e6b6273750f337a0f0bb70c394218b0a6f..dfc02ac245c444c37e667596d1319e1263e4b919 100644 (file)
@@ -17,6 +17,7 @@
 using namespace std;
 
 #include "inspircd_config.h"
+#include "inspircd_io.h"
 #include "globals.h"
 #include "dynamic.h"
 
@@ -32,6 +33,8 @@ using namespace std;
 #include <sys/types.h>
 #include <stdio.h>
 
+extern ServerConfig* Config;
+
 DLLManager::DLLManager(char *fname)
 {
 #ifdef STATIC_LINK
@@ -49,6 +52,17 @@ DLLManager::DLLManager(char *fname)
                }
        }
        err = "Module is not statically compiled into the ircd";
+#else
+#ifdef IS_CYGWIN
+       // Cygwin behaviour is handled slightly differently
+       // With the advent of dynamic modules. Because Windows
+       // wont let you overwrite a file which is currently in
+       // Use, we can safely attempt to load the module from its
+       // Current location :)
+
+       h = dlopen(fname, RTLD_NOW );
+       err = (char*)dlerror();
+
 #else
        // Copy the library to a temp location, this makes recompiles
        // a little safer if the ircd is running at the time as the
@@ -57,7 +71,7 @@ DLLManager::DLLManager(char *fname)
        FILE* x = fopen(fname,"rb");
        char tmpfile_template[255];
        char buffer[65536];
-       snprintf(tmpfile_template, 255, "/tmp/inspircd_file.so.%d.XXXXXXXXXX",getpid());
+       snprintf(tmpfile_template, 255, "%s/inspircd_file.so.%d.XXXXXXXXXX",Config->TempDir,getpid());
        int fd = mkstemp(tmpfile_template);
        while (!feof(x))
        {
@@ -72,7 +86,9 @@ DLLManager::DLLManager(char *fname)
        err = (char*)dlerror();
        close(fd);
        // We can delete the tempfile once it's loaded, leaving just the inode.
-       //unlink(tmpfile_template);
+       if (!Config->debugging)
+               unlink(tmpfile_template);
+#endif
 #endif
 }