Modify 'user_config_directory()' and 'user_cache_directory()' so that (on Windows...
authorJohn Emmas <johne53@tiscali.co.uk>
Mon, 10 Mar 2014 16:05:40 +0000 (16:05 +0000)
committerJohn Emmas <johne53@tiscali.co.uk>
Mon, 10 Mar 2014 16:24:11 +0000 (16:24 +0000)
libs/ardour/filesystem_paths.cc

index a523e35730f4e503079f4b26de6e52a6f4f4fd85..acb691d7dbd63ea3f9c102aa4fcf48714b04bb59 100644 (file)
 
 #include "i18n.h"
 
+#ifdef PLATFORM_WINDOWS
+#include "shlobj.h"
+#include "pbd/windows_special_dirs.h"
+#endif
+
 using namespace PBD;
 
 namespace ARDOUR {
@@ -54,8 +59,14 @@ user_config_directory ()
        if ((c = getenv ("XDG_CONFIG_HOME")) != 0) {
                p = c;
        } else {
-               const string home_dir = Glib::get_home_dir();
+#ifdef PLATFORM_WINDOWS
+               std::string home_dir;
 
+               if (0 != PBD::get_win_special_folder(CSIDL_LOCAL_APPDATA))
+                       home_dir = PBD::get_win_special_folder(CSIDL_LOCAL_APPDATA);
+#else
+               const string home_dir = Glib::get_home_dir();
+#endif
                if (home_dir.empty ()) {
                        error << "Unable to determine home directory" << endmsg;
                        exit (1);
@@ -104,7 +115,14 @@ user_cache_directory ()
        if ((c = getenv ("XDG_CACHE_HOME")) != 0) {
                p = c;
        } else {
+#ifdef PLATFORM_WINDOWS
+               std::string home_dir;
+
+               if (0 != PBD::get_win_special_folder(CSIDL_LOCAL_APPDATA))
+                       home_dir = PBD::get_win_special_folder(CSIDL_LOCAL_APPDATA);
+#else
                const string home_dir = Glib::get_home_dir();
+#endif
 
                if (home_dir.empty ()) {
                        error << "Unable to determine home directory" << endmsg;