using namespace std;
#include "inspircd_config.h"
+#include "inspircd_io.h"
#include "globals.h"
#include "dynamic.h"
#include <sys/types.h>
#include <stdio.h>
+extern ServerConfig* Config;
+
DLLManager::DLLManager(char *fname)
{
#ifdef STATIC_LINK
}
}
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
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))
{
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
}