diff options
author | Stijn Buys <ingar@osirion.org> | 2008-09-18 17:35:58 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-09-18 17:35:58 +0000 |
commit | 84a53f91e64ad801703bcf2c73a82b75ff10d760 (patch) | |
tree | bc187f6586d9527e3d6cd6d01b36036bd12f9695 /src | |
parent | b6fcc157dad58d4fab32e01ea161acf20ab434a1 (diff) |
fix win32 build and directory creation, use My Games\
Diffstat (limited to 'src')
-rw-r--r-- | src/filesystem/filesystem.cc | 29 | ||||
-rw-r--r-- | src/game/Makefile.am | 3 | ||||
-rw-r--r-- | src/render/tga.cc | 2 | ||||
-rw-r--r-- | src/sys/sys.cc | 11 |
4 files changed, 36 insertions, 9 deletions
diff --git a/src/filesystem/filesystem.cc b/src/filesystem/filesystem.cc index 0fec129..3404296 100644 --- a/src/filesystem/filesystem.cc +++ b/src/filesystem/filesystem.cc @@ -8,6 +8,13 @@ #include <list> +#ifdef _WIN32 + +#include <windows.h> +#include <shlobj.h> + +#endif + #include "filesystem/filesystem.h" #include "filesystem/diskfile.h" #include "filesystem/file.h" @@ -54,8 +61,25 @@ void init(std::string const & basename, std::string const & modname) filesystem_homedir.assign(getenv("HOME")); filesystem_homedir.append("/.osirion/"); #else - // FIXME win32 - filesystem_homedir.assign("home/"); + char mydocuments[512]; + memset(mydocuments, 0, sizeof(mydocuments)); + + SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, mydocuments); + filesystem_homedir.assign(mydocuments); + + if (filesystem_homedir.size()) { + filesystem_homedir.append("\\My Games"); + if (!sys::isdirectory(filesystem_homedir)) + sys::mkdir(filesystem_homedir); + + filesystem_homedir.append("\\Osirion"); + if (!sys::isdirectory(filesystem_homedir)) + sys::mkdir(filesystem_homedir); + + filesystem_homedir.append("\\"); + } else { + filesystem_homedir.assign("home/"); + } #endif std::string current_datadir("data/"); @@ -77,7 +101,6 @@ void init(std::string const & basename, std::string const & modname) sys::mkdir(filesystem_homedir); sys::mkdir(filesystem_writedir); - // modname search path if (filesystem_modname.size()) { // HOME/modname diff --git a/src/game/Makefile.am b/src/game/Makefile.am index 0ff1ba5..ff591eb 100644 --- a/src/game/Makefile.am +++ b/src/game/Makefile.am @@ -7,5 +7,4 @@ libgame_la_SOURCES = game.cc jumppoint.cc navpoint.cc planet.cc racetrack.cc \ noinst_LTLIBRARIES = libgame.la noinst_HEADERS = game.h navpoint.h planet.h racetrack.h ship.h shipmodel.h \ - star.h -_SOURCES = jumppoint.h + star.h jumppoint.h diff --git a/src/render/tga.cc b/src/render/tga.cc index d9e5cb2..a7a2356 100644 --- a/src/render/tga.cc +++ b/src/render/tga.cc @@ -167,7 +167,7 @@ Image *TGA::load(const char *filename) while (index < tga_width * tga_height) { unsigned char rle = 0; - unsigned char pixel_data[channels]; + unsigned char pixel_data[3]; // read RLE packet byte tga_file->read(&rle, 1); diff --git a/src/sys/sys.cc b/src/sys/sys.cc index 3aec456..db2be4d 100644 --- a/src/sys/sys.cc +++ b/src/sys/sys.cc @@ -10,6 +10,7 @@ #include <windows.h> #include <sys/types.h> #include <sys/stat.h> +#include <direct.h> #else @@ -22,6 +23,7 @@ #endif +#include <stdio.h> #include <stdlib.h> #include <string> @@ -62,12 +64,15 @@ bool isdirectory(std::string const &path) void mkdir(std::string const &path) { #ifdef _WIN32 -/* std::string p(path); for (size_t i = 0; i < p.size(); i++) if (p[i] == '/') p[i] = '\\'; - mkdir(p.c_str()); -*/ + if (p.size() && (p[p.size()-1] == '\\')) + p.erase(p.size() -1, 1); + + if (_mkdir(p.c_str()) != 0) { + con_warn << "Could not create directory '" << p << "'" << std::endl; + } #else ::mkdir(path.c_str(), 0777); |