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;

4360

if (!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";

5481

unsigned int platform_sum = 0;