summaryrefslogtreecommitdiff
path: root/src/m_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/m_config.c')
-rw-r--r--src/m_config.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/m_config.c b/src/m_config.c
index b934d9d4..762e6eaf 100644
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -1703,3 +1703,40 @@ void M_SetConfigDir(char *dir)
M_MakeDirectory(configdir);
}
+//
+// Calculate the path to the directory to use to store save games.
+// Creates the directory as necessary.
+//
+
+char *M_GetSaveGameDir(char *iwadname)
+{
+ char *savegamedir;
+
+ // If not "doing" a configuration directory (Windows), don't "do"
+ // a savegame directory, either.
+
+ if (!strcmp(configdir, ""))
+ {
+ savegamedir = strdup("");
+ }
+ else
+ {
+ // ~/.chocolate-doom/savegames/
+
+ savegamedir = malloc(strlen(configdir) + 30);
+ sprintf(savegamedir, "%ssavegames%c", configdir,
+ DIR_SEPARATOR);
+
+ M_MakeDirectory(savegamedir);
+
+ // eg. ~/.chocolate-doom/savegames/doom2.wad/
+
+ sprintf(savegamedir + strlen(savegamedir), "%s%c",
+ iwadname, DIR_SEPARATOR);
+
+ M_MakeDirectory(savegamedir);
+ }
+
+ return savegamedir;
+}
+