From 9a76cb8839b11c1701e6b18f6b1bf625571e6412 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sun, 10 Jun 2012 20:15:40 +0200 Subject: [PATCH] Config dirs is now XDG compliant. --- grive/src/Config.cc | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/grive/src/Config.cc b/grive/src/Config.cc index 6a66d56..dc073a9 100644 --- a/grive/src/Config.cc +++ b/grive/src/Config.cc @@ -27,10 +27,30 @@ namespace gr { const std::string& Config::Filename() { - static const char *env_cfg = ::getenv( "GR_CONFIG" ) ; - static const std::string filename = (env_cfg != 0) ? env_cfg : ".grive" ; + static std::string cfg_path; + char *cfg_base; + bool fallback; + + fallback = false; + cfg_base = getenv("XDG_CONFIG_HOME"); + if (!cfg_base) + { + fallback = true; + cfg_base = getenv("HOME"); + /* Clutter the current directory if forced to */ + if (!cfg_base) + cfg_base = (char *)"."; + } - return filename ; + cfg_path = cfg_base; + cfg_path += "/"; + if (fallback) /* Hidden folder */ + cfg_path += "."; + cfg_path += "grive"; + cfg_path += "/"; + cfg_path += "config.json"; + + return cfg_path ; } Config::Config() :