summaryrefslogtreecommitdiff
path: root/libs/ardour/filesystem_paths.cc
diff options
context:
space:
mode:
authorJohn Emmas <johne53@tiscali.co.uk>2014-08-28 08:08:43 +0100
committerJohn Emmas <johne53@tiscali.co.uk>2014-08-28 08:08:43 +0100
commit670f55f5e4181a14d08008b2188951e85480ee42 (patch)
treee77c903bc040640cdb75651b7432c53d3cf46e94 /libs/ardour/filesystem_paths.cc
parent65715dd2985bfc5140e6d1a44ae9603a981a364d (diff)
Add an extra folder to get searched (on Windows only) when looking for config files.
This is a preliminary test to find out if 'All Users' would be a better place for our (writable) config files, as opposed to the user's personal 'AppData' folder (which we used in Mixbus2). N.B. this should not effect any previous operations on Windows or non-Windows platforms.
Diffstat (limited to 'libs/ardour/filesystem_paths.cc')
-rw-r--r--libs/ardour/filesystem_paths.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/libs/ardour/filesystem_paths.cc b/libs/ardour/filesystem_paths.cc
index 1b4bd0476d..ec5edb8aab 100644
--- a/libs/ardour/filesystem_paths.cc
+++ b/libs/ardour/filesystem_paths.cc
@@ -180,10 +180,32 @@ ardour_config_search_path ()
static Searchpath search_path;
if (search_path.empty()) {
+ // Start by adding the user's personal config folder
search_path += user_config_directory();
#ifdef PLATFORM_WINDOWS
+ // On Windows, add am intermediate configuration folder
+ // (one that's guaranteed to be writable by all users).
+ const gchar* const *all_users_folder = g_get_system_config_dirs();
+ // Despite its slightly odd name, the above returns a single entry which
+ // corresponds to 'All Users' on Windows (according to the documentation)
+
+ if (all_users_folder) {
+ std::string writable_all_users_path = all_users_folder[0];
+ writable_all_users_path += "\\";
+ writable_all_users_path += PROGRAM_NAME;
+ writable_all_users_path += "\\.config";
+#ifdef _WIN64
+ writable_all_users_path += "\\win64";
+#else
+ writable_all_users_path += "\\win32";
+#endif
+ search_path += writable_all_users_path;
+ }
+
+ // now add a suitable config path from the bundle
search_path += windows_search_path ();
#endif
+ // finally, add any paths from ARDOUR_CONFIG_PATH if it exists
std::string s = Glib::getenv("ARDOUR_CONFIG_PATH");
if (s.empty()) {
std::cerr << _("ARDOUR_CONFIG_PATH not set in environment\n");