From 3da6af6e380c244a8fa2f44ba3e7d75c66e15521 Mon Sep 17 00:00:00 2001
From: Lukasz Gromanowski <lgromanowski@gmail.com>
Date: Thu, 23 Feb 2012 23:01:42 +0100
Subject: [PATCH 1/2] Bug fixes for configuration handling.

Added erasing double quotes from paths, corrected retriveing
installation path from wine registry. Updated doxygen comments.

Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
---
 components/files/configurationmanager.cpp | 5 ++++-
 components/files/linuxpath.cpp            | 9 +++++++--
 components/files/macospath.hpp            | 6 +++---
 components/files/windowspath.hpp          | 2 +-
 4 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/components/files/configurationmanager.cpp b/components/files/configurationmanager.cpp
index c5561d652..8173c6a04 100644
--- a/components/files/configurationmanager.cpp
+++ b/components/files/configurationmanager.cpp
@@ -6,6 +6,7 @@
 #include <algorithm>
 
 #include <boost/bind.hpp>
+#include <boost/algorithm/string/erase.hpp>
 
 /**
  * \namespace Files
@@ -69,9 +70,11 @@ void ConfigurationManager::readConfiguration(boost::program_options::variables_m
 
 void ConfigurationManager::processPaths(Files::PathContainer& dataDirs)
 {
+    std::string path;
     for (Files::PathContainer::iterator it = dataDirs.begin(); it != dataDirs.end(); ++it)
     {
-        const std::string& path = it->string();
+        path = it->string();
+        boost::erase_all(path, "\"");
 
         // Check if path contains a token
         if (!path.empty() && *path.begin() == '?')
diff --git a/components/files/linuxpath.cpp b/components/files/linuxpath.cpp
index 0b315ccfb..92e4dce33 100644
--- a/components/files/linuxpath.cpp
+++ b/components/files/linuxpath.cpp
@@ -105,11 +105,16 @@ boost::filesystem::path LinuxPath::getInstallPath() const
             std::string line;
             std::string mwpath;
 
-            while (std::getline(file, line) && !line.empty())
+            while (std::getline(file, line))
             {
                 if (line[0] == '[') // we found an entry
                 {
-                    isRegEntry = (line.find("Softworks\\Morrowind]") != std::string::npos);
+                    if (isRegEntry)
+                    {
+                        break;
+                    }
+
+                    isRegEntry = (line.find("Softworks\\\\Morrowind]") != std::string::npos);
                 }
                 else if (isRegEntry)
                 {
diff --git a/components/files/macospath.hpp b/components/files/macospath.hpp
index 7656538c1..0e9b3402e 100644
--- a/components/files/macospath.hpp
+++ b/components/files/macospath.hpp
@@ -39,21 +39,21 @@ namespace Files
 struct MacOsPath
 {
     /**
-     * \brief Return path to the local configuration directory.
+     * \brief Return path to the local directory.
      *
      * \return boost::filesystem::path
      */
     boost::filesystem::path getUserPath() const;
 
     /**
-     * \brief Return path to the global (system) configuration directory.
+     * \brief Return path to the global (system) directory.
      *
      * \return boost::filesystem::path
      */
     boost::filesystem::path getGlobalPath() const;
 
     /**
-     * \brief Return path to the runtime configuration directory which is the
+     * \brief Return path to the runtime directory which is the
      * place where an application was started.
      *
      * \return boost::filesystem::path
diff --git a/components/files/windowspath.hpp b/components/files/windowspath.hpp
index 919d087f1..d4c716c50 100644
--- a/components/files/windowspath.hpp
+++ b/components/files/windowspath.hpp
@@ -62,7 +62,7 @@ struct WindowsPath
     boost::filesystem::path getLocalPath() const;
 
     /**
-     * \brief Return same path like getGlobalConfigPath
+     * \brief Return same path like getGlobalPath
      *
      * \return boost::filesystem::path
      */

From d97854be004a97223be0e3241c0c534df469dceb Mon Sep 17 00:00:00 2001
From: Lukasz Gromanowski <lgromanowski@gmail.com>
Date: Thu, 23 Feb 2012 23:21:17 +0100
Subject: [PATCH 2/2] Bug fixes for configuration handling.

Corrected retrieving installation path from wine registry on MacOS.
Updated doxygen comments.

Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
---
 components/files/linuxpath.hpp | 2 +-
 components/files/macospath.cpp | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/components/files/linuxpath.hpp b/components/files/linuxpath.hpp
index 873f8801d..48fdbb2ff 100644
--- a/components/files/linuxpath.hpp
+++ b/components/files/linuxpath.hpp
@@ -46,7 +46,7 @@ struct LinuxPath
     boost::filesystem::path getUserPath() const;
 
     /**
-     * \brief Return path to the global (system) configuration directory.
+     * \brief Return path to the global (system) directory where game files could be placed.
      *
      * \return boost::filesystem::path
      */
diff --git a/components/files/macospath.cpp b/components/files/macospath.cpp
index 6225fc01f..fc36e2a9c 100644
--- a/components/files/macospath.cpp
+++ b/components/files/macospath.cpp
@@ -105,11 +105,16 @@ boost::filesystem::path MacOsPath::getInstallPath() const
             std::string line;
             std::string mwpath;
 
-            while (std::getline(file, line) && !line.empty())
+            while (std::getline(file, line))
             {
                 if (line[0] == '[') // we found an entry
                 {
-                    isRegEntry = (line.find("Softworks\\Morrowind]") != std::string::npos);
+                    if (isRegEntry)
+                    {
+                        break;
+                    }
+
+                    isRegEntry = (line.find("Softworks\\\\Morrowind]") != std::string::npos);
                 }
                 else if (isRegEntry)
                 {