Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2012-01-15 16:53:40 +0000
committerStijn Buys <ingar@osirion.org>2012-01-15 16:53:40 +0000
commit47a0d9b5a128ef537693055da194e552476bc2f4 (patch)
treec0803a3c38c5c262f5ce841102ca451d7c2b523d /src/filesystem/filestream.cc
parent945d6f4a31c5e565b1bec23268565569f513842c (diff)
added filesystem::OFileStream class.
Diffstat (limited to 'src/filesystem/filestream.cc')
-rw-r--r--src/filesystem/filestream.cc85
1 files changed, 67 insertions, 18 deletions
diff --git a/src/filesystem/filestream.cc b/src/filesystem/filestream.cc
index 53c72d8..8218a48 100644
--- a/src/filesystem/filestream.cc
+++ b/src/filesystem/filestream.cc
@@ -10,50 +10,56 @@
namespace filesystem
{
+/* ---- class IFileStream ------------------------------------------ */
+
IFileStream::IFileStream(const char *name) : std::ifstream()
{
- if (name)
- fstream_name.assign(name);
-
- open(name);
+ if (name && name[0]) {
+ open(name);
+ }
}
-IFileStream::IFileStream(const std::string &name) : std::ifstream(), fstream_name(name)
+IFileStream::IFileStream(const std::string &name) : std::ifstream(), ifstream_name(name)
{
- open(fstream_name);
+ if (name.size()) {
+ open(ifstream_name);
+ }
}
void IFileStream::open(const char *name)
{
- if (!name) {
+ if (!name || !name[0]) {
if (is_open()) {
close();
}
- fstream_name.clear();
- fstream_filename.clear();
+ ifstream_name.clear();
+ ifstream_filename.clear();
return;
}
- fstream_name.assign(name);
-
+ ifstream_name.assign(name);
+
for (SearchPath::iterator path = searchpath().begin(); path != searchpath().end(); path++) {
- fstream_filename.assign((*path));
- fstream_filename.append(fstream_name);
+ ifstream_filename.assign((*path));
+ ifstream_filename.append(ifstream_name);
/*
#ifdef _WIN32
for (size_t i = 0; i < fstream_filename.size(); i++)
if (fstream_filename[i] == '/') fstream_filename[i] = '\\';
#endif
*/
-
- if (sys::file_exists(fstream_filename)) {
- std::ifstream::open(fstream_filename.c_str());
- if (good())
+ if (sys::file_exists(ifstream_filename)) {
+ std::ifstream::open(ifstream_filename.c_str());
+ if (good()) {
return;
+ } else {
+ con_warn << "Could not read file " << filename() << std::endl;
+ }
+
}
}
- fstream_filename.clear();
+ ifstream_filename.clear();
}
void IFileStream::open(const std::string &name)
@@ -61,4 +67,47 @@ void IFileStream::open(const std::string &name)
open(name.c_str());
}
+/* ---- class OFileStream ------------------------------------------ */
+
+OFileStream::OFileStream(const char *name) : std::ofstream()
+{
+ if (name && name[0]) {
+ open(name);
+ }
+}
+
+OFileStream::OFileStream(const std::string &name) : std::ofstream(), ofstream_name(name)
+{
+ if (name.size()) {
+ open(ofstream_name);
+ }
+}
+
+void OFileStream::open(const char *name)
+{
+ if (!name || !name[0]) {
+ if (is_open()) {
+ close();
+ }
+ ofstream_name.clear();
+ ofstream_filename.clear();
+ return;
+ }
+
+ ofstream_name.assign(name);
+
+ ofstream_filename.assign(writedir());
+ ofstream_filename.append(ofstream_name);
+ std::ofstream::open(ofstream_filename.c_str());
+
+ if (!good()) {
+ ofstream_filename.clear();
+ }
+}
+
+void OFileStream::open(const std::string &name)
+{
+ open(name.c_str());
+}
+
}