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);