13
0

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
This commit is contained in:
Paul Davis 2012-01-09 19:35:01 +00:00
parent 51d422af5a
commit 4306fc7aee
2 changed files with 34 additions and 2 deletions

View File

@ -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
}

View File

@ -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;
}