daemon: make possible to set datadir before init

Signed-off-by: R4SAS <r4sas@i2pmail.org>
pull/1752/head
R4SAS 2 years ago
parent 678a1ae0fb
commit 2f10decf56

@ -64,6 +64,12 @@ namespace util
return service; return service;
} }
void Daemon_Singleton::setDataDir(std::string path)
{
if (path != "")
DaemonDataDir = path;
}
bool Daemon_Singleton::init(int argc, char* argv[]) { bool Daemon_Singleton::init(int argc, char* argv[]) {
return init(argc, argv, nullptr); return init(argc, argv, nullptr);
} }
@ -73,8 +79,14 @@ namespace util
i2p::config::Init(); i2p::config::Init();
i2p::config::ParseCmdline(argc, argv); i2p::config::ParseCmdline(argc, argv);
std::string config; i2p::config::GetOption("conf", config); std::string config; i2p::config::GetOption("conf", config);
std::string datadir; i2p::config::GetOption("datadir", datadir); std::string datadir;
if(DaemonDataDir != "") {
datadir = DaemonDataDir;
} else {
i2p::config::GetOption("datadir", datadir);
}
i2p::fs::DetectDataDir(datadir, IsService()); i2p::fs::DetectDataDir(datadir, IsService());
i2p::fs::Init(); i2p::fs::Init();

@ -20,27 +20,33 @@ namespace util
class Daemon_Singleton_Private; class Daemon_Singleton_Private;
class Daemon_Singleton class Daemon_Singleton
{ {
public: public:
virtual bool init (int argc, char* argv[], std::shared_ptr<std::ostream> 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<std::ostream> logstream); protected:
virtual bool init(int argc, char* argv[]);
virtual bool start();
virtual bool stop();
virtual void run () {};
bool isDaemon; Daemon_Singleton ();
bool running; virtual ~Daemon_Singleton ();
protected: bool IsService () const;
Daemon_Singleton(); // d-pointer for httpServer, httpProxy, etc.
virtual ~Daemon_Singleton(); class Daemon_Singleton_Private;
Daemon_Singleton_Private &d;
bool IsService () const; private:
// d-pointer for httpServer, httpProxy, etc. std::string DaemonDataDir;
class Daemon_Singleton_Private;
Daemon_Singleton_Private &d;
}; };
#if defined(QT_GUI_LIB) // check if QT #if defined(QT_GUI_LIB) // check if QT

Loading…
Cancel
Save