diff options
-rw-r--r-- | include/inspircd_io.h | 4 | ||||
-rw-r--r-- | src/dynamic.cpp | 2 | ||||
-rw-r--r-- | src/inspircd_io.cpp | 5 |
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) |