/* common/file.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ // project headers #include "file.h" #include "console.h" namespace common { std::string File::datadir = ""; std::string File::homedir = ""; std::string File::basedir = ""; std::string File::moddir = ""; void File::open(const char * filename, ios_base::openmode mode) { std::string fn; // if moddir is set, try the mods subdir first if (moddir.size() > 0) { // try homedir+moddir fn = homedir; fn.append(moddir); fn.append(filename); std::ifstream::open(fn.c_str(), mode); if (this->is_open()) { condebug << "File opened " << fn << std::endl; return; } // try datadir + moddir fn = datadir; fn.append(moddir); std::ifstream::open(fn.c_str(), mode); if (this->is_open()) { condebug << "File opened " << fn << std::endl; return; } } // try homedir+basedir fn = homedir; fn.append(basedir); fn.append(filename); std::ifstream::open(fn.c_str(), mode); if (this->is_open()) { condebug << "File opened " << fn << std::endl; return; } // try datadir+basedir fn = datadir; fn.append(basedir); fn.append(filename); std::ifstream::open(fn.c_str(), mode); if (!this->is_open()) { condebug << "File could not open " << filename << std::endl; } else { conmesg << "File opened " << fn << std::endl; } } } // namespace common