summaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2014-10-07 22:05:16 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2014-10-07 22:22:59 +0200
commit12feb49098b3fdcaa489ceb557a4461b5cdebcf9 (patch)
tree51a42503b196276b2e186d4d7b53f15542d15687 /src/common
parent502f7a8a5fc90b5b490e65e0c1f8cc60c2d40957 (diff)
downloadcolobot-12feb49098b3fdcaa489ceb557a4461b5cdebcf9.tar.gz
colobot-12feb49098b3fdcaa489ceb557a4461b5cdebcf9.tar.bz2
colobot-12feb49098b3fdcaa489ceb557a4461b5cdebcf9.zip
Fixes in unit tests
Diffstat (limited to 'src/common')
-rw-r--r--src/common/profile.cpp45
-rw-r--r--src/common/resources/inputstream.cpp5
-rw-r--r--src/common/resources/inputstream.h3
-rw-r--r--src/common/resources/outputstream.cpp5
-rw-r--r--src/common/resources/outputstream.h3
5 files changed, 47 insertions, 14 deletions
diff --git a/src/common/profile.cpp b/src/common/profile.cpp
index 5ecb804..2cb20f3 100644
--- a/src/common/profile.cpp
+++ b/src/common/profile.cpp
@@ -23,6 +23,7 @@
#include "common/logger.h"
+#include <memory>
#include <utility>
#include <cstring>
#include <boost/property_tree/ini_parser.hpp>
@@ -54,15 +55,25 @@ bool CProfile::Init()
{
try
{
- CInputStream stream;
- stream.open("colobot.ini");
- if(stream.is_open()) {
- bp::ini_parser::read_ini(stream, m_propertyTree);
- } else {
+ std::unique_ptr<std::istream> stream;
+ if (m_useCurrentDirectory)
+ {
+ stream = std::unique_ptr<std::istream>(new std::ifstream("./colobot.ini"));
+ }
+ else
+ {
+ stream = std::unique_ptr<std::istream>(new CInputStream("colobot.ini"));
+ }
+
+ if (stream->good())
+ {
+ bp::ini_parser::read_ini(*stream, m_propertyTree);
+ }
+ else
+ {
GetLogger()->Error("Error on parsing profile: failed to open file\n");
return false;
}
- stream.close();
}
catch (std::exception & e)
{
@@ -78,15 +89,25 @@ bool CProfile::Save()
{
try
{
- COutputStream stream;
- stream.open("colobot.ini");
- if(stream.is_open()) {
- bp::ini_parser::write_ini(stream, m_propertyTree);
- } else {
+ std::unique_ptr<std::ostream> stream;
+ if (m_useCurrentDirectory)
+ {
+ stream = std::unique_ptr<std::ostream>(new std::ofstream("./colobot.ini"));
+ }
+ else
+ {
+ stream = std::unique_ptr<std::ostream>(new COutputStream("colobot.ini"));
+ }
+
+ if (stream->good())
+ {
+ bp::ini_parser::write_ini(*stream, m_propertyTree);
+ }
+ else
+ {
GetLogger()->Error("Error on storing profile: failed to open file\n");
return false;
}
- stream.close();
}
catch (std::exception & e)
{
diff --git a/src/common/resources/inputstream.cpp b/src/common/resources/inputstream.cpp
index b5ba63f..3907c76 100644
--- a/src/common/resources/inputstream.cpp
+++ b/src/common/resources/inputstream.cpp
@@ -22,6 +22,11 @@ CInputStream::CInputStream() : std::istream(new CInputStreamBuffer())
{
}
+CInputStream::CInputStream(const std::string& filename) : std::istream(new CInputStreamBuffer())
+{
+ open(filename);
+}
+
CInputStream::~CInputStream()
{
diff --git a/src/common/resources/inputstream.h b/src/common/resources/inputstream.h
index 9573f2c..70d9ff5 100644
--- a/src/common/resources/inputstream.h
+++ b/src/common/resources/inputstream.h
@@ -24,9 +24,10 @@ class CInputStream : public std::istream
{
public:
CInputStream();
+ CInputStream(const std::string& filename);
virtual ~CInputStream();
- void open(const std::string &filename);
+ void open(const std::string& filename);
void close();
bool is_open();
size_t size();
diff --git a/src/common/resources/outputstream.cpp b/src/common/resources/outputstream.cpp
index ba43ba6..bce194e 100644
--- a/src/common/resources/outputstream.cpp
+++ b/src/common/resources/outputstream.cpp
@@ -22,6 +22,11 @@ COutputStream::COutputStream() : std::ostream(new COutputStreamBuffer())
{
}
+COutputStream::COutputStream(const std::string& filename) : std::ostream(new COutputStreamBuffer())
+{
+ open(filename);
+}
+
COutputStream::~COutputStream()
{
diff --git a/src/common/resources/outputstream.h b/src/common/resources/outputstream.h
index bedbbbd..2927a99 100644
--- a/src/common/resources/outputstream.h
+++ b/src/common/resources/outputstream.h
@@ -24,9 +24,10 @@ class COutputStream : public std::ostream
{
public:
COutputStream();
+ COutputStream(const std::string& filename);
virtual ~COutputStream();
- void open(const std::string &filename);
+ void open(const std::string& filename);
void close();
bool is_open();
};