summaryrefslogtreecommitdiff
path: root/libs/ardour/filesystem_paths.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/filesystem_paths.cc')
-rw-r--r--libs/ardour/filesystem_paths.cc27
1 files changed, 26 insertions, 1 deletions
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 <cstdlib>
#include "pbd/error.h"
+#include "pbd/compose.h"
#include "pbd/filesystem_paths.h"
#include <glibmm/miscutils.h>
+#include <glibmm/fileutils.h>
#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;
}