hide user_config_dir_name; alter API for user_config_dir() to allow specification...
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Mar 2015 15:30:42 +0000 (10:30 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Mar 2015 15:39:15 +0000 (10:39 -0500)
libs/ardour/ardour/directory_names.h
libs/ardour/ardour/filesystem_paths.h
libs/ardour/directory_names.cc
libs/ardour/filesystem_paths.cc

index 17532e2a3aff8c5cd928e25dbc2a52521f62feda..db3fc1d533d9648d6b06ae8b322b3e0255e4ae6b 100644 (file)
@@ -40,7 +40,6 @@ namespace ARDOUR {
        LIBARDOUR_API extern const char* const route_templates_dir_name;
        LIBARDOUR_API extern const char* const surfaces_dir_name;
        LIBARDOUR_API extern const char* const ladspa_dir_name;
-       LIBARDOUR_API extern const char* const user_config_dir_name;
        LIBARDOUR_API extern const char* const panner_dir_name;
        LIBARDOUR_API extern const char* const backend_dir_name;
 
index a6ca2d1c77ba5d87075cf235caf2a6fd2bc83f3a..82b84f5424b4dc2fd67a64e16e9f6a5f09a95a7c 100644 (file)
 namespace ARDOUR {
 
        /**
-        * @return the path to the directory used to store user specific ardour
-        * configuration files.
+        * @return the path to the directory used to store user specific 
+        * configuration files for the given @param version of the program.
+        * If @param version is negative, the build-time string PROGRAM_VERSION
+        * will be used to determine the version number.
+        *
         * @post user_config_directory() exists
+        *
+        * 
         */
-       LIBARDOUR_API std::string user_config_directory ();
+        LIBARDOUR_API std::string user_config_directory (int version = -1);
 
        /**
         * @return the path to the directory used to store user specific
index 43238ba45afa687d3a90862883aefbffabbc66a5..a5d7bbbe9bc56745226a9cb6739c83e14d28113d 100644 (file)
@@ -40,12 +40,4 @@ const char* const ladspa_dir_name = X_("ladspa");
 const char* const panner_dir_name = X_("panners");
 const char* const backend_dir_name = X_("backends");
 
-char config_dir_name[] = X_(PROGRAM_NAME PROGRAM_VERSION);
-#if defined (__APPLE__) || defined (PLATFORM_WINDOWS)
-const char* const user_config_dir_name = config_dir_name;
-#else
-#include "pbd/convert.h"
-const char* const user_config_dir_name = PBD::downcase (config_dir_name);
-#endif
-
 }
index c0766c066f65f2f7c3755469601bfc157ec470b9..c07acb02805920fe01cf587a6dc03c8fbfe2e86e 100644 (file)
@@ -19,8 +19,9 @@
 #include <cstdlib>
 #include <iostream>
 
-#include "pbd/error.h"
 #include "pbd/compose.h"
+#include "pbd/convert.h"
+#include "pbd/error.h"
 
 #include <glibmm/miscutils.h>
 #include <glibmm/fileutils.h>
@@ -41,8 +42,24 @@ namespace ARDOUR {
 
 using std::string;
 
+static std::string
+user_config_directory_name (int version = -1)
+{
+       if (version < 0) {
+               version = atoi (X_(PROGRAM_VERSION));
+       }
+
+       const string config_dir_name = string_compose ("%1%2", X_(PROGRAM_NAME), version);
+       
+#if defined (__APPLE__) || defined (PLATFORM_WINDOWS)
+       return config_dir_name;
+#else
+       return downcase (config_dir_name);
+#endif
+}      
+
 std::string
-user_config_directory ()
+user_config_directory (int version)
 {
        static std::string p;
 
@@ -79,7 +96,7 @@ user_config_directory ()
        }
 #endif // end not __APPLE__
 
-       p = Glib::build_filename (p, user_config_dir_name);
+       p = Glib::build_filename (p, user_config_directory_name (version));
 
        if (!Glib::file_test (p, Glib::FILE_TEST_EXISTS)) {
                if (g_mkdir_with_parents (p.c_str(), 0755)) {
@@ -134,7 +151,7 @@ user_cache_directory ()
        }
 #endif // end not __APPLE__
 
-       p = Glib::build_filename (p, user_config_dir_name);
+       p = Glib::build_filename (p, user_config_directory_name ());
 
 #ifdef PLATFORM_WINDOWS
         /* On Windows Glib::get_user_data_dir is the folder to use for local