From 4ceee86c66ac85eeaa8714d3bcd2dd8c19cc4db5 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Sun, 10 Jul 2016 12:56:43 +0200 Subject: [PATCH] SyncEngine: Calculate a uniq journal name using the remote account. That should allow to sync the same local folder to multiple remote destinations. see #3764 --- src/libsync/syncengine.cpp | 14 +++++++++++++- src/libsync/syncjournaldb.cpp | 7 ------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 20acc6a743..1e38678658 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -90,8 +90,20 @@ SyncEngine::SyncEngine(AccountPtr account, const QString& localPath, #endif url_string = Utility::toCSyncScheme(url_string); + // localPath always has a trailing slash + QString dbFile = localPath; + dbFile.append( QLatin1String(".csync_")); + // FIXME: Make sure this remoteUrlPath is equal to the one calculated in FolderMan::ensureJournalGone + // FIXME: Maybe it is better to only allow different hosts, without path component. + QString remoteUrlPath = _remoteUrl.toString()+_remotePath; + QByteArray ba = QCryptographicHash::hash( remoteUrlPath.toUtf8(), QCryptographicHash::Md5); + dbFile.append( ba.left(6).toHex() ); + + _journal->setDatabaseFilePath(dbFile); + csync_create(&_csync_ctx, localPath.toUtf8().data(), url_string.toUtf8().data()); - csync_init(_csync_ctx); + csync_init(_csync_ctx, dbFile.toUtf8().data()); + _excludedFiles.reset(new ExcludedFiles(&_csync_ctx->excludes)); _syncFileStatusTracker.reset(new SyncFileStatusTracker(this)); diff --git a/src/libsync/syncjournaldb.cpp b/src/libsync/syncjournaldb.cpp index 54d77c49d3..cfbf1211b0 100644 --- a/src/libsync/syncjournaldb.cpp +++ b/src/libsync/syncjournaldb.cpp @@ -33,13 +33,6 @@ SyncJournalDb::SyncJournalDb(const QString& path, QObject *parent) : QObject(parent), _transaction(0) { - _dbFile = path; - if( !_dbFile.endsWith('/') ) { - _dbFile.append('/'); - } - _dbFile.append(".csync_journal.db"); - - } bool SyncJournalDb::exists()