From 1383fde3457168ed759d6ed3b913dfae8a6085ef Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Thu, 5 Mar 2020 16:23:07 -0800 Subject: uhd: paths: Harmonize around XDG Base Directory specification Up until now, we completely ignore the XDG specification. This commit does the following to change that: - It uses XDG_DATA_HOME and XDG_CONFIG_HOME for cal and config data, respectively. - If config data is in ~/.uhd/uhd.conf, that is still accepted, but if it conflicts with $XDG_CONFIG_HOME/uhd.conf, it is ignored and a warning is displayed - The default location for cal data is thus ${HOME}/.local/share/uhd/cal on Unix, and %LOCALAPPDATA%\uhd\cal on Windows. This is a change in location! - The UHD_CONFIG_DIR environment variable was confusingly named and is now removed. It provided an alternative location than the home directory. The same purpose is now much better served by XDG_DATA_HOME and XDG_CONFIG_HOME. The specification can be found here: specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html --- host/lib/include/uhdlib/utils/paths.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'host/lib/include/uhdlib/utils/paths.hpp') diff --git a/host/lib/include/uhdlib/utils/paths.hpp b/host/lib/include/uhdlib/utils/paths.hpp index 7caac8a7d..cff9299d6 100644 --- a/host/lib/include/uhdlib/utils/paths.hpp +++ b/host/lib/include/uhdlib/utils/paths.hpp @@ -7,6 +7,7 @@ #ifndef INCLUDED_UHDLIB_UTILS_PATHS_HPP #define INCLUDED_UHDLIB_UTILS_PATHS_HPP +#include #include namespace uhd { @@ -18,8 +19,29 @@ namespace uhd { */ std::string path_expandvars(const std::string& path); +//! Compatibility function for deprecated CSV file reader. Remove this when CSV +// format for IQ/DC cal gets removed. std::string get_appdata_path(void); +//! Return a path to XDG_DATA_HOME +// +// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html +// +// Even on non-Linux systems, this should return the place where app data is +// written to. For UHD, this is data such as calibration data. +boost::filesystem::path get_xdg_data_home(); + +//! Return a path to XDG_CONFIG_HOME +// +// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html +// +// Even on non-Linux systems, this should return the place where the +// configuration file can be stored. +boost::filesystem::path get_xdg_config_home(); + +//! Return a path to ~/.uhd +boost::filesystem::path get_legacy_config_home(); + } /* namespace uhd */ #endif /* INCLUDED_UHDLIB_UTILS_PATHS_HPP */ -- cgit v1.2.3