diff options
Diffstat (limited to 'src/Config.cpp')
-rw-r--r-- | src/Config.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Config.cpp b/src/Config.cpp index 7ddc1af..a1752b1 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -53,6 +53,15 @@ namespace QuickMedia { return scale; } + static std::string path_expanduser(const std::string &path) { + std::string result; + if(!path.empty() && path[0] == '~') + result = get_home_dir().data + path.substr(1); + else + result = path; + return result; + } + // No-op if this has already been called before static void init_config() { if(config_initialized) @@ -135,7 +144,7 @@ namespace QuickMedia { if(local_manga_json.isObject()) { const Json::Value &directory_json = local_manga_json["directory"]; if(directory_json.isString()) { - config->local_manga.directory = directory_json.asString(); + config->local_manga.directory = path_expanduser(directory_json.asString()); while(config->local_manga.directory.size() > 1 && config->local_manga.directory.back() == '/') { config->local_manga.directory.pop_back(); } @@ -154,7 +163,7 @@ namespace QuickMedia { if(local_anime_json.isObject()) { const Json::Value &directory_json = local_anime_json["directory"]; if(directory_json.isString()) { - config->local_anime.directory = directory_json.asString(); + config->local_anime.directory = path_expanduser(directory_json.asString()); while(config->local_anime.directory.size() > 1 && config->local_anime.directory.back() == '/') { config->local_anime.directory.pop_back(); } |