From 9296ce0e4c4e62286c69f8a998c6c4d288068cf6 Mon Sep 17 00:00:00 2001 From: crowning- Date: Thu, 16 Apr 2015 13:13:33 +0200 Subject: [PATCH] Autobackup: keep n-backups per wallet-name --- src/init.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index ffc8700b1..15825809f 100755 --- a/src/init.cpp +++ b/src/init.cpp @@ -751,13 +751,22 @@ bool AppInit2(boost::thread_group& threadGroup) boost::filesystem::directory_iterator end_iter; boost::filesystem::path backupFolder = backupDir.string(); backupFolder.make_preferred(); - // Build map of backup files sorted by last write time + // Build map of backup files for current(!) wallet sorted by last write time + boost::filesystem::path currentFile; for (boost::filesystem::directory_iterator dir_iter(backupFolder); dir_iter != end_iter; ++dir_iter) { + // Only check regular files if ( boost::filesystem::is_regular_file(dir_iter->status())) - folder_set.insert(folder_set_t::value_type(boost::filesystem::last_write_time(dir_iter->path()), *dir_iter)); + { + currentFile = dir_iter->path().filename(); + // Only add the backups for the current wallet, e.g. wallet.dat.* + if(currentFile.string().find(strWalletFile) != string::npos) + { + folder_set.insert(folder_set_t::value_type(boost::filesystem::last_write_time(dir_iter->path()), *dir_iter)); + } + } } - // Loop backward through backup files and keep the 10 newest ones + // Loop backward through backup files and keep the N newest ones (1 <= N <= 10) int counter = 0; BOOST_REVERSE_FOREACH(PAIRTYPE(const std::time_t, boost::filesystem::path) file, folder_set) {