Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/filesystem/filesystem.cc29
-rw-r--r--src/game/Makefile.am3
-rw-r--r--src/render/tga.cc2
-rw-r--r--src/sys/sys.cc11
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);