/* 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" namespace game { void File::open(const char * filename, ios_base::openmode mode) { std::string fn; // if moddir is set, try the mods subdir first if (game::moddir.size() > 0) { // try game::homedir+game::moddir fn = homedir; fn.append(moddir); fn.append(filename); std::ifstream::open(fn.c_str(), mode); if (this->is_open()) { std::cerr << "game::File opened " << fn << std::endl; return; } // try datadir + moddir fn = game::datadir; fn.append(game::moddir); std::ifstream::open(fn.c_str(), mode); if (this->is_open()) { std::cerr << "game::File opened " << fn << std::endl; return; } } // try game::homedir+game::basedir fn = homedir; fn.append(basedir); fn.append(filename); std::ifstream::open(fn.c_str(), mode); if (this->is_open()) { std::cerr << "game::File opened " << fn << std::endl; return; } // try game::datadir+game::basedir fn = datadir; fn.append(basedir); fn.append(filename); std::ifstream::open(fn.c_str(), mode); // FIXME console if (!this->is_open()) { std::cerr << "game::File could not open " << filename << std::endl; } else { std::cerr << "game::File opened " << fn << std::endl; } } }