From 4306fc7aeea2855f3a70c50a1641a7664bd04054 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Jan 2012 19:35:01 +0000 Subject: change config dir on OS X to ~/Library/Preferences/Ardour3 git-svn-id: svn://localhost/ardour2/branches/3.0@11210 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/directory_names.cc | 9 ++++++++- libs/ardour/filesystem_paths.cc | 27 ++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/libs/ardour/directory_names.cc b/libs/ardour/directory_names.cc index 571600670c..1e2b08198f 100644 --- a/libs/ardour/directory_names.cc +++ b/libs/ardour/directory_names.cc @@ -16,7 +16,14 @@ const char* const export_formats_dir_name = X_("export"); const char* const templates_dir_name = X_("templates"); const char* const route_templates_dir_name = X_("route_templates"); const char* const surfaces_dir_name = X_("surfaces"); -const char* const user_config_dir_name = X_("ardour3"); const char* const panner_dir_name = X_("panners"); + +/* these should end up using variants of PROGRAM_NAME */ +#ifdef __APPLE__ +const char* const user_config_dir_name = X_("Ardour" "3"); +#else +const char* const user_config_dir_name = X_("ardour" "3"); +#endif + } diff --git a/libs/ardour/filesystem_paths.cc b/libs/ardour/filesystem_paths.cc index 5dc5e4dbde..11ddc88502 100644 --- a/libs/ardour/filesystem_paths.cc +++ b/libs/ardour/filesystem_paths.cc @@ -19,13 +19,17 @@ #include #include "pbd/error.h" +#include "pbd/compose.h" #include "pbd/filesystem_paths.h" #include +#include #include "ardour/directory_names.h" #include "ardour/filesystem_paths.h" +#include "i18n.h" + #define WITH_STATIC_PATHS 1 using namespace PBD; @@ -37,9 +41,15 @@ using std::string; sys::path user_config_directory () { - const char* c = 0; sys::path p; +#ifdef __APPLE__ + p = Glib::get_home_dir(); + p /= "Library/Preferences"; + +#else + const char* c = 0; + /* adopt freedesktop standards, and put .ardour3 into $XDG_CONFIG_HOME or ~/.config */ @@ -60,9 +70,24 @@ user_config_directory () p = home_dir; p /= ".config"; } +#endif p /= user_config_dir_name; + std::string ps (p.to_string()); + + if (!Glib::file_test (ps, Glib::FILE_TEST_EXISTS)) { + if (g_mkdir_with_parents (ps.c_str(), 0755)) { + error << string_compose (_("Cannot create Configuration directory %1 - cannot run"), + ps) << endmsg; + exit (1); + } + } else if (!Glib::file_test (ps, Glib::FILE_TEST_IS_DIR)) { + error << string_compose (_("Configuration directory %1 already exists and is not a directory/folder - cannot run"), + ps) << endmsg; + exit (1); + } + return p; } -- cgit v1.2.3