aboutsummaryrefslogtreecommitdiff
path: root/src/Config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Config.cpp')
-rw-r--r--src/Config.cpp13
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();
}