From bbae0af0ef66ceb3cb316f01fe5b9315daa959e9 Mon Sep 17 00:00:00 2001 From: atmaxinger Date: Sun, 25 May 2014 22:27:28 +0200 Subject: [PATCH] Save screenshots in home folder, Add functions for path separator and detection of homefolder to osinterface --- src/config.c | 11 +++++++---- src/osinterface.c | 16 ++++++++++++++++ src/osinterface.h | 3 +++ src/screenshot.c | 3 ++- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/config.c b/src/config.c index 4415705b28..1c428787a2 100644 --- a/src/config.c +++ b/src/config.c @@ -216,20 +216,23 @@ void config_save() */ void config_init() { - TCHAR path[MAX_PATH]; + char path[MAX_PATH]; FILE* fp; memcpy(&gGeneral_config, &gGeneral_config_default, sizeof(general_configuration_t)); - if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL | CSIDL_FLAG_CREATE, NULL, 0, path))) { // find home folder - strcat(path, "\\OpenRCT2"); + strncpy(path, osinterface_get_orct2_homefolder(), MAX_PATH); + + if (strcmp(path, "") != 0){ DWORD dwAttrib = GetFileAttributes(path); if (dwAttrib == INVALID_FILE_ATTRIBUTES || !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) { // folder does not exist if (!CreateDirectory(path, NULL)) { config_error("Could not create config file (do you have write access to your documents folder?)"); } } - strcat(path, "\\config.ini"); + + sprintf(path, "%s%c%s", path, osinterface_get_path_separator(), "config.ini"); + fp = fopen(path, "r"); if (!fp) { config_create_default(path); diff --git a/src/osinterface.c b/src/osinterface.c index 8117a31198..974c9da05d 100644 --- a/src/osinterface.c +++ b/src/osinterface.c @@ -428,3 +428,19 @@ char* osinterface_open_directory_browser(char *title) { CoUninitialize(); return outPath; } + +char* osinterface_get_orct2_homefolder() +{ + char path[260]=""; + + if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL | CSIDL_FLAG_CREATE, NULL, 0, path))) { // find home folder + strcat(path, "\\OpenRCT2"); + } + + return path; +} + +char osinterface_get_path_separator() +{ + return '\\'; +} \ No newline at end of file diff --git a/src/osinterface.h b/src/osinterface.h index 8360d3f1c4..50f78904a0 100644 --- a/src/osinterface.h +++ b/src/osinterface.h @@ -50,4 +50,7 @@ int osinterface_open_common_file_dialog(int type, char *title, char *filename, c void osinterface_show_messagebox(char* message); char* osinterface_open_directory_browser(char *title); +char* osinterface_get_orct2_homefolder(); +char osinterface_get_path_separator(); + #endif diff --git a/src/screenshot.c b/src/screenshot.c index d557297a9e..6e040686b6 100644 --- a/src/screenshot.c +++ b/src/screenshot.c @@ -21,6 +21,7 @@ #include #include #include +#include "osinterface.h" #include "addresses.h" #include "config.h" #include "gfx.h" @@ -64,7 +65,7 @@ static int screenshot_get_next_path(char *path, char *extension) RCT2_GLOBAL(0x013CE952, uint16) = i; // Glue together path and filename - sprintf(path, "%sSCR%d%s", RCT2_ADDRESS(RCT2_ADDRESS_APP_PATH_SLASH, char), i, extension); + sprintf(path, "%s%cSCR%d%s", osinterface_get_orct2_homefolder(), osinterface_get_path_separator(), i, extension); if (GetFileAttributes(path) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND) return i;