diff --git a/daemon/Daemon.cpp b/daemon/Daemon.cpp index d011d9d4..744c1e6c 100644 --- a/daemon/Daemon.cpp +++ b/daemon/Daemon.cpp @@ -64,6 +64,12 @@ namespace util return service; } + void Daemon_Singleton::setDataDir(std::string path) + { + if (path != "") + DaemonDataDir = path; + } + bool Daemon_Singleton::init(int argc, char* argv[]) { return init(argc, argv, nullptr); } @@ -73,8 +79,14 @@ namespace util i2p::config::Init(); i2p::config::ParseCmdline(argc, argv); - std::string config; i2p::config::GetOption("conf", config); - std::string datadir; i2p::config::GetOption("datadir", datadir); + std::string config; i2p::config::GetOption("conf", config); + std::string datadir; + if(DaemonDataDir != "") { + datadir = DaemonDataDir; + } else { + i2p::config::GetOption("datadir", datadir); + } + i2p::fs::DetectDataDir(datadir, IsService()); i2p::fs::Init(); diff --git a/daemon/Daemon.h b/daemon/Daemon.h index 836c2a8e..26d4a047 100644 --- a/daemon/Daemon.h +++ b/daemon/Daemon.h @@ -20,27 +20,33 @@ namespace util class Daemon_Singleton_Private; class Daemon_Singleton { - public: + public: + + virtual bool init (int argc, char* argv[], std::shared_ptr logstream); + virtual bool init (int argc, char* argv[]); + virtual bool start (); + virtual bool stop (); + virtual void run () {}; + + virtual void setDataDir (std::string path); + + bool isDaemon; + bool running; - virtual bool init(int argc, char* argv[], std::shared_ptr logstream); - virtual bool init(int argc, char* argv[]); - virtual bool start(); - virtual bool stop(); - virtual void run () {}; + protected: - bool isDaemon; - bool running; + Daemon_Singleton (); + virtual ~Daemon_Singleton (); - protected: + bool IsService () const; - Daemon_Singleton(); - virtual ~Daemon_Singleton(); + // d-pointer for httpServer, httpProxy, etc. + class Daemon_Singleton_Private; + Daemon_Singleton_Private &d; - bool IsService () const; + private: - // d-pointer for httpServer, httpProxy, etc. - class Daemon_Singleton_Private; - Daemon_Singleton_Private &d; + std::string DaemonDataDir; }; #if defined(QT_GUI_LIB) // check if QT