summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/inspircd_io.h4
-rw-r--r--src/dynamic.cpp2
-rw-r--r--src/inspircd_io.cpp5
3 files changed, 9 insertions, 2 deletions
diff --git a/include/inspircd_io.h b/include/inspircd_io.h
index 990b746be..711488c36 100644
--- a/include/inspircd_io.h
+++ b/include/inspircd_io.h
@@ -142,6 +142,10 @@ class ServerConfig : public classbase
*/
char ModPath[1024];
+ /** The temporary directory where modules are copied
+ */
+ char TempDir[1024];
+
/** The full pathname to the executable, as
* given in argv[0] when the program starts.
*/
diff --git a/src/dynamic.cpp b/src/dynamic.cpp
index 1dfb823c6..dfc02ac24 100644
--- a/src/dynamic.cpp
+++ b/src/dynamic.cpp
@@ -71,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))
{
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index 7630eddce..02f3a1e2d 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -44,7 +44,7 @@ extern std::vector<ircd_module*> factory;
ServerConfig::ServerConfig()
{
this->ClearStack();
- *ServerName = *Network = *ServerDesc = *AdminName = '\0';
+ *TempDir = *ServerName = *Network = *ServerDesc = *AdminName = '\0';
*HideWhoisServer = *AdminEmail = *AdminNick = *diepass = *restartpass = '\0';
*CustomVersion = *motd = *rules = *PrefixQuit = *DieValue = *DNSServer = '\0';
*OperOnlyStats = *ModPath = *MyExecutable = *DisabledCommands = *PID = '\0';
@@ -228,7 +228,10 @@ void ServerConfig::Read(bool bail, userrec* user)
ConfValue("options","maxtargets",0,MT,&Config->config_f);
ConfValue("options","hidesplits",0,HS,&Config->config_f);
ConfValue("options","hidewhois",0,Config->HideWhoisServer,&Config->config_f);
+ ConfValue("options","tempdir",0,Config->TempDir,&Config->config_f);
+ if (!*Config->TempDir)
+ strlcpy(Config->TempDir,"/tmp");
Config->HideSplits = ((*HS == 'y') || (*HS == 'Y') || (*HS == '1') || (*HS == 't') || (*HS == 'T'));
Config->SoftLimit = atoi(SLIMT);
if (*MT)