yoshimi (0.058.1-1) 02-userconfig_path.patch

Summary

 src/Misc/Config.cpp |   25 ++++++++++++++++++++-----
 src/Misc/Config.h   |    1 +
 2 files changed, 21 insertions(+), 5 deletions(-)

    
download this patch

Patch contents

Author: Alessio Treglia <alessio@debian.org>
Description: Store user settings under ${HOME}/.config as
 Freedesktop.org's per-spec.
 http://www.freedesktop.org/wiki/Software/xdg-user-dirs
Forwarded: cal@graggrag.com
---
 src/Misc/Config.cpp |   25 ++++++++++++++++++++-----
 src/Misc/Config.h   |    1 +
 2 files changed, 21 insertions(+), 5 deletions(-)

--- yoshimi.orig/src/Misc/Config.cpp
+++ yoshimi/src/Misc/Config.cpp
@@ -29,6 +29,9 @@
 #include <xmmintrin.h>
 #endif
 
+#include <errno.h>
+#include <sys/stat.h>
+
 using namespace std;
 
 #include "GuiThreadUI.h"
@@ -67,16 +70,16 @@ static struct argp_option cmd_options[]
     {"autostart-jack",  'k',  NULL,         0,  "auto start jack server" },
     {"auto-connect",    'K',  NULL,         0,  "auto connect jack audio" },
     {"state",           'S',  "<file>",   0x1,
-        "load state from <file>, defaults to '$HOME/.yoshimi/yoshimi.state'" },
+        "load state from <file>, defaults to '$HOME/.config/yoshimi/yoshimi.state'" },
     { 0, }
 };
 
 
 
 Config::Config() :
-    ConfigFile(string(getenv("HOME")) + string("/.yoshimiXML.cfg")),
+    ConfigFile(string(getenv("HOME")) + string("/.config/yoshimi/yoshimiXML.cfg")),
     restoreState(false),
-    StateFile(string(getenv("HOME")) + string("/.yoshimi/yoshimi.state")),
+    StateFile(string(getenv("HOME")) + string("/.config/yoshimi/yoshimi.state")),
     Samplerate(48000),
     Buffersize(128),
     Oscilsize(1024),
@@ -112,6 +115,7 @@ Config::Config() :
         Log("Setting SIGQUIT handler failed");
     AntiDenormals(true);       
 
+    checkConfigDir();
     clearBankrootDirlist();
     clearPresetsDirlist();
     loadConfig();
@@ -233,6 +237,17 @@ void Config::clearPresetsDirlist(void)
         presetsDirlist[i].clear();
 }
 
+bool Config::checkConfigDir(void)
+{
+    string str_conf_dir = string(getenv("HOME")) + string("/.config/yoshimi");
+    if(mkdir((char *) str_conf_dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0 && errno != EEXIST)
+    {
+        Log("Unable to create " + str_conf_dir);
+        return false;
+    }
+    return true;
+}
+
 bool Config::loadConfig(void)
 {
     XMLwrapper *xml = new XMLwrapper();
@@ -304,7 +319,7 @@ bool Config::loadConfigData(XMLwrapper *
             "/usr/local/share/yoshimi/banks",
             "/usr/share/zynaddsubfx/banks",
             "/usr/local/share/zynaddsubfx/banks",
-            string(getenv("HOME")) + "/banks",
+            string(getenv("HOME")) + "/.config/yoshimi/banks",
             "../banks",
             "banks"
         };
@@ -337,7 +352,7 @@ bool Config::loadConfigData(XMLwrapper *
             "/usr/local/share/yoshimi/presets",
             "/usr/share/zynaddsubfx/presets",
             "/usr/local/share/zynaddsubfx/presets",
-            string(getenv("HOME")) + "/presets",
+            string(getenv("HOME")) + "/.config/yoshimi/presets",
             "../presets",
             "presets"
         };
--- yoshimi.orig/src/Misc/Config.h
+++ yoshimi/src/Misc/Config.h
@@ -107,6 +107,7 @@ class Config
         list<string> LogList;
 
     private:
+        bool checkConfigDir(void);
         bool loadConfig(void);
         bool loadConfigData(XMLwrapper *xml);
         bool loadRuntimeData(XMLwrapper *xml);