Browse Source

prefer XDG paths on mac, but default to ~/Library

if a user has XDG_* paths setup on mac, it's more than likely those were
explicitly defined and therefore the preferred mechanism for organizing
such fs data. the ~/Library paths are sensible default alternatives,
but providing a way to override them (via the environment rather than
command-line arguments) is not only convenient but also consistent with
linux/fbsd path behavior
mac_paths
John Robinson 3 years ago
parent
commit
ca9560982a
No known key found for this signature in database
1 changed files with 24 additions and 3 deletions
  1. +24
    -3
      src/dds/util/paths.macos.cpp

+ 24
- 3
src/dds/util/paths.macos.cpp View File

@@ -19,8 +19,29 @@ fs::path dds::user_home_dir() {
return ret;
}

fs::path dds::user_data_dir() { return user_home_dir() / "Library/Application Support"; }
fs::path dds::user_cache_dir() { return user_home_dir() / "Library/Caches"; }
fs::path dds::user_config_dir() { return user_home_dir() / "Library/Preferences"; }
fs::path dds::user_data_dir() {
static auto ret = []() -> fs::path {
return fs::absolute(dds::getenv("XDG_DATA_HOME", [] {
return user_home_dir() / "Library/Application Support";
}));
}();
return ret;
}

fs::path dds::user_cache_dir() {
static auto ret = []() -> fs::path {
return fs::absolute(
dds::getenv("XDG_CACHE_HOME", [] { return user_home_dir() / "Library/Caches"; }));
}();
return ret;
}

fs::path dds::user_config_dir() {
static auto ret = []() -> fs::path {
return fs::absolute(
dds::getenv("XDG_CONFIG_HOME", [] { return user_home_dir() / "Library/Preferences"; }));
}();
return ret;
}

#endif

Loading…
Cancel
Save