From 670f55f5e4181a14d08008b2188951e85480ee42 Mon Sep 17 00:00:00 2001 From: John Emmas Date: Thu, 28 Aug 2014 08:08:43 +0100 Subject: 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. --- libs/ardour/filesystem_paths.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'libs/ardour/filesystem_paths.cc') 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"); -- cgit v1.2.3