From 9fce067a3ea137aef08e96ed8be748e45c9db93b Mon Sep 17 00:00:00 2001 From: Kelson42 Date: Thu, 15 May 2014 21:23:36 +0200 Subject: [PATCH] + Launcher can be now launched from one level directory hight than before --- src/launcher/kiwix-launcher.cpp | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/launcher/kiwix-launcher.cpp b/src/launcher/kiwix-launcher.cpp index 80d1f66..6d8957f 100644 --- a/src/launcher/kiwix-launcher.cpp +++ b/src/launcher/kiwix-launcher.cpp @@ -22,27 +22,40 @@ #include #include +#include + #include "pathTools.h" using namespace std; int main(int argc, char *argv[]) { - + /* Initialisation of a few paths */ string executablePath = getExecutablePath(); string executableDirectory = removeLastPathElement(executablePath); - string applicationIniPath = computeAbsolutePath(executableDirectory, "application.ini"); + + /* Possible xulrunner paths */ + std::vector xulrunnerPossibleDirectories; + xulrunnerPossibleDirectories.push_back("xulrunner"); + xulrunnerPossibleDirectories.push_back("kiwix/xulrunner"); + xulrunnerPossibleDirectories.push_back("kiwix-linux/xulrunner"); + xulrunnerPossibleDirectories.push_back("kiwix-win/xulrunner"); + xulrunnerPossibleDirectories.push_back("kiwix-windows/xulrunner"); /* Find xulrunner directory */ - string xulrunnerDirectory = computeAbsolutePath(executableDirectory, "xulrunner"); - if (!fileExists(xulrunnerDirectory)) { - xulrunnerDirectory = computeAbsolutePath(executableDirectory, "kiwix"); - xulrunnerDirectory = computeAbsolutePath(executableDirectory, "xulrunner"); + string xulrunnerDirectory; + std::vector::iterator directoriesIt = xulrunnerPossibleDirectories.begin(); + while (xulrunnerDirectory.empty() && directoriesIt != xulrunnerPossibleDirectories.end()) { + xulrunnerDirectory = computeAbsolutePath(executableDirectory, *directoriesIt); if (!fileExists(xulrunnerDirectory)) { - perror("Unable to find the xulrunner directory"); - return EXIT_FAILURE; + xulrunnerDirectory.clear(); + directoriesIt++; } } + if (!fileExists(xulrunnerDirectory)) { + perror("Unable to find the xulrunner directory"); + return EXIT_FAILURE; + } /* Find xulrunner binary path */ string xulrunnerPath = computeAbsolutePath(xulrunnerDirectory, "xulrunner-bin"); @@ -54,6 +67,9 @@ int main(int argc, char *argv[]) { } } + /* Compute application.ini path */ + string applicationIniPath = computeAbsolutePath(removeLastPathElement(xulrunnerDirectory, false, false), "application.ini"); + /* Debug prints */ /* cout << "Executable directory (executableDirectory): " << executableDirectory << endl;