aboutsummaryrefslogtreecommitdiff
path: root/base/gameDetector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'base/gameDetector.cpp')
-rw-r--r--base/gameDetector.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp
index 58a82630a8..d873f0da5f 100644
--- a/base/gameDetector.cpp
+++ b/base/gameDetector.cpp
@@ -36,6 +36,14 @@
#include "config.h"
#endif
+#ifdef UNIX
+#include <sys/errno.h>
+#include <sys/stat.h>
+#ifndef MACOSX
+#define DEFAULT_SAVE_PATH ".scummvm"
+#endif
+#endif
+
// DONT FIXME: DO NOT ORDER ALPHABETICALLY, THIS IS ORDERED BY IMPORTANCE/CATEGORY! :)
#ifdef __PALM_OS__
static const char USAGE_STRING[] = "NoUsageString"; // save more data segment space
@@ -99,6 +107,7 @@ static const char USAGE_STRING[] =
;
#endif
+
GameDetector::GameDetector() {
// Graphics
@@ -152,6 +161,29 @@ GameDetector::GameDetector() {
ConfMan.registerDefault("alsa_port", "65:0");
#endif
+#ifdef DEFAULT_SAVE_PATH
+ char savePath[MAXPATHLEN];
+#ifdef UNIX
+ struct stat sb;
+ if (getenv("HOME") != NULL) {
+ snprintf(savePath, MAXPATHLEN, "%s/%s", getenv("HOME"), DEFAULT_SAVE_PATH);
+ if (stat(savePath, &sb) == -1) {
+ /* create the dir if it does not exist */
+ if (errno == ENOENT) {
+ if (mkdir(savePath, 0755) != 0) {
+ perror("mkdir");
+ exit(1);
+ }
+ }
+ }
+ /* check that we can the dir is there */
+ if (stat(savePath, &sb) == 0) {
+ ConfMan.registerDefault("savepath", savePath);
+ }
+ }
+#endif
+#endif
+
_dumpScripts = false;
memset(&_game, 0, sizeof(_game));