diff options
author | Stijn Buys <ingar@osirion.org> | 2007-12-17 14:47:30 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2007-12-17 14:47:30 +0000 |
commit | 09f307b6cb4f7c69e5b0685acc0bdd18e9d57d40 (patch) | |
tree | 08c5c8e1e516413278db3817dd89749cc3dbdac3 /src | |
parent | 8f1e895de4986e3a953023b31840210c5555856e (diff) |
home directory creation
Diffstat (limited to 'src')
-rw-r--r-- | src/common/path.cc | 40 | ||||
-rw-r--r-- | src/common/path.h | 26 | ||||
-rw-r--r-- | src/game/game.cc | 13 |
3 files changed, 76 insertions, 3 deletions
diff --git a/src/common/path.cc b/src/common/path.cc new file mode 100644 index 0000000..d9fc332 --- /dev/null +++ b/src/common/path.cc @@ -0,0 +1,40 @@ +/* + common/path.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 "path.h" +#include "console.h" + +#ifdef _WIN32 +#include <dlfcn.h> +#else +#include <sys/stat.h> +#endif + +namespace common { + +void Path::create(std::string path) +{ + std::string tmp(path); + if (tmp[tmp.size()-1] == '/') + tmp = tmp.substr(0, tmp.size() - 1); + +#ifdef _WIN32 + mkdir(tmp.c_str()); +#else + if (!mkdir(tmp.c_str(), 0777)) + conwarn << "Could not create directory " << tmp << std::endl; + else + condebug << "Path created " << tmp << std::endl; +#endif +} + +bool Path::exists(std::string path) +{ + return false; +} + +} diff --git a/src/common/path.h b/src/common/path.h new file mode 100644 index 0000000..43b07d2 --- /dev/null +++ b/src/common/path.h @@ -0,0 +1,26 @@ +/* + common/path.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_PATH_H__ +#define __INCLUDED_PATH_H__ + +// C++ headers +#include <string> +#include <fstream> + +namespace common { + +/// a class to create directories +class Path +{ +public: + static bool exists(std::string path); + static void create(std::string path); +}; // class Path + +} // namespace common + +#endif // __INCLUDED_PATH_H__ diff --git a/src/game/game.cc b/src/game/game.cc index cbde6b0..cd80889 100644 --- a/src/game/game.cc +++ b/src/game/game.cc @@ -11,6 +11,7 @@ #include "common/console.h" #include "common/inifile.h" +#include "common/path.h" #include "osirion.h" @@ -35,6 +36,7 @@ std::vector<Sector*> sectors; void init() { using common::File; + using common::Path; using common::IniFile; using common::Vector3f; @@ -42,11 +44,16 @@ void init() condebug << "Debug messages enabled" << std::endl; // initialize game data locations - // TODO create game::homedir if it doesn't exist - File::datadir = "./data/"; - File::homedir = "~/.osirion/"; + File::datadir = "./data/"; File::basedir = "base/"; File::moddir = ""; + + // FIXME win32 + File::homedir = getenv("HOME"); + File::homedir = File::homedir + "/.osirion/"; + Path::create(File::homedir); + Path::create(File::homedir+File::basedir); + if (File::moddir.size()) Path::create(File::homedir+File::moddir); // read game.ini IniFile f; |