Add a way to specify a library to use with kiwix-serve.

If kiwix-desktop use a `library.xml` in the same directory than the
executable, we need to use it instead of the default one.

Instead of detect again the `library.xml` to use, let `kiwix-desktop` set
the library to use.

This also fix a issue when `/` is not a valid path separator in windows.
This commit is contained in:
Matthieu Gautier 2019-09-11 11:30:59 +02:00
parent d90774450d
commit e42e061d45
2 changed files with 7 additions and 4 deletions

View File

@ -2,6 +2,7 @@
#define KIWIXLIB_KIWIX_SERVE_H_ #define KIWIXLIB_KIWIX_SERVE_H_
#include <memory> #include <memory>
#include <string>
class Subprocess; class Subprocess;
namespace kiwix { namespace kiwix {
@ -9,7 +10,7 @@ namespace kiwix {
class KiwixServe class KiwixServe
{ {
public: public:
KiwixServe(int port = 8181); KiwixServe(const std::string& libraryPath, int port = 8181);
~KiwixServe(); ~KiwixServe();
void run(); void run();
@ -20,6 +21,7 @@ class KiwixServe
private: private:
std::unique_ptr<Subprocess> mp_kiwixServe; std::unique_ptr<Subprocess> mp_kiwixServe;
int m_port; int m_port;
std::string m_libraryPath;
}; };
}; //end namespace kiwix }; //end namespace kiwix

View File

@ -14,7 +14,9 @@
namespace kiwix { namespace kiwix {
KiwixServe::KiwixServe(int port) : m_port(port) KiwixServe::KiwixServe(const std::string& libraryPath, int port)
: m_port(port),
m_libraryPath(libraryPath)
{ {
} }
@ -43,13 +45,12 @@ void KiwixServe::run()
// Try to use a potential installed kiwix-serve. // Try to use a potential installed kiwix-serve.
callCmd.push_back(KIWIXSERVE_CMD); callCmd.push_back(KIWIXSERVE_CMD);
} }
std::string libraryPath = getDataDirectory() + "/library.xml";
std::string attachProcessOpt = "-a" + to_string(pid); std::string attachProcessOpt = "-a" + to_string(pid);
std::string portOpt = "-p" + to_string(m_port); std::string portOpt = "-p" + to_string(m_port);
callCmd.push_back(attachProcessOpt.c_str()); callCmd.push_back(attachProcessOpt.c_str());
callCmd.push_back(portOpt.c_str()); callCmd.push_back(portOpt.c_str());
callCmd.push_back("-l"); callCmd.push_back("-l");
callCmd.push_back(libraryPath.c_str()); callCmd.push_back(m_libraryPath.c_str());
mp_kiwixServe = Subprocess::run(callCmd); mp_kiwixServe = Subprocess::run(callCmd);
} }