Support XDG Base Directory Specification · Sude-/lgogdownloader@d430af6
@@ -33,12 +33,29 @@ int main(int argc, char *argv[])
3333{
3434 Config config;
3535 config.sVersionString = VERSION_STRING;
36- config.sHome = (std::string)getenv("HOME");
37- config.sCookiePath = config.sHome + "/.gogdownloader/cookies.txt";
38- config.sConfigFilePath = config.sHome + "/.gogdownloader/config.cfg";
39- config.sXMLDirectory = config.sHome + "/.gogdownloader/xml";
36+char *xdgconfig = getenv("XDG_CONFIG_HOME");
37+char *xdgcache = getenv("XDG_CACHE_HOME");
38+ std::string home = (std::string)getenv("HOME");
403941-// Create gogdownloader directories
40+if (xdgconfig)
41+ {
42+ config.sConfigDirectory = (std::string)xdgconfig + "/lgogdownloader";
43+ config.sCookiePath = config.sConfigDirectory + "/cookies.txt";
44+ config.sConfigFilePath = config.sConfigDirectory + "/config.cfg";
45+ }
46+else
47+ {
48+ config.sConfigDirectory = home + "/.config/lgogdownloader";
49+ config.sCookiePath = config.sConfigDirectory + "/cookies.txt";
50+ config.sConfigFilePath = config.sConfigDirectory + "/config.cfg";
51+ }
52+53+if (xdgcache)
54+ config.sXMLDirectory = (std::string)xdgcache + "/lgogdownloader/xml";
55+else
56+ config.sXMLDirectory = home + "/.cache/lgogdownloader/xml";
57+58+// Create lgogdownloader directories
4259 boost::filesystem::path path = config.sXMLDirectory;
4360if (!boost::filesystem::exists(path))
4461 {
@@ -49,6 +66,16 @@ int main(int argc, char *argv[])
4966 }
5067 }
516869+ path = config.sConfigDirectory;
70+if (!boost::filesystem::exists(path))
71+ {
72+if (!boost::filesystem::create_directories(path))
73+ {
74+ std::cout << "Failed to create directory: " << path << std::endl;
75+return 1;
76+ }
77+ }
78+5279// Create help text for --platform option
5380 std::string platform_text = "Select which installers are downloaded\n";
5481unsigned int platform_sum = 0;