diff options
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;  | 
