summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2021-01-24 06:00:23 +0100
committerGitHub <noreply@github.com>2021-01-24 06:00:23 +0100
commitfc76a939bb3c2eff1d90819d369328df1fa43499 (patch)
tree248c05d57f5998d02ea712a558a85f52ea9de440 /src
parentMerge pull request #406 from rnhmjoj/open-in (diff)
parentWrite database to the DataLocation (diff)
downloadnheko-fc76a939bb3c2eff1d90819d369328df1fa43499.tar.xz
Merge pull request #405 from rnhmjoj/move-state
Write database to the DataLocation
Diffstat (limited to 'src')
-rw-r--r--src/Cache.cpp24
-rw-r--r--src/main.cpp7
2 files changed, 27 insertions, 4 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index 7e25fed2..6b3067db 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -169,13 +169,35 @@ Cache::setup() nhlog::db()->debug("setting up cache"); + // Previous location of the cache directory + auto oldCache = QString("%1/%2%3") + .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)) + .arg(QString::fromUtf8(localUserId_.toUtf8().toHex())) + .arg(QString::fromUtf8(settings->profile().toUtf8().toHex())); + cacheDirectory_ = QString("%1/%2%3") - .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)) + .arg(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)) .arg(QString::fromUtf8(localUserId_.toUtf8().toHex())) .arg(QString::fromUtf8(settings->profile().toUtf8().toHex())); bool isInitial = !QFile::exists(cacheDirectory_); + // NOTE: If both cache directories exist it's better to do nothing: it + // could mean a previous migration failed or was interrupted. + bool needsMigration = isInitial && QFile::exists(oldCache); + + if (needsMigration) { + nhlog::db()->info("found old state directory, migrating"); + if (!QDir().rename(oldCache, cacheDirectory_)) { + throw std::runtime_error(("Unable to migrate the old state directory (" + + oldCache + ") to the new location (" + + cacheDirectory_ + ")") + .toStdString() + .c_str()); + } + nhlog::db()->info("completed state migration"); + } + env_ = lmdb::env::create(); env_.set_mapsize(DB_SIZE); env_.set_max_dbs(MAX_DBS); diff --git a/src/main.cpp b/src/main.cpp
index b1dfa9f6..a890a6fd 100644 --- a/src/main.cpp +++ b/src/main.cpp
@@ -93,9 +93,9 @@ screenCenter(int width, int height) } void -createCacheDirectory() +createStandardDirectory(QStandardPaths::StandardLocation path) { - auto dir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); + auto dir = QStandardPaths::writableLocation(path); if (!QDir().mkpath(dir)) { throw std::runtime_error( @@ -188,7 +188,8 @@ main(int argc, char *argv[]) http::init(); - createCacheDirectory(); + createStandardDirectory(QStandardPaths::CacheLocation); + createStandardDirectory(QStandardPaths::AppDataLocation); registerSignalHandlers();