From 2bcd20122e57665860df754cdf658ded436663ae Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 7 Nov 2014 23:53:08 +0100 Subject: [PATCH] Keep file modification times if no file in directory changed --- urbackupclient/client.cpp | 59 +++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/urbackupclient/client.cpp b/urbackupclient/client.cpp index 3bc87267..2758dd4a 100644 --- a/urbackupclient/client.cpp +++ b/urbackupclient/client.cpp @@ -1150,43 +1150,40 @@ std::vector IndexThread::getFilesProxy(const std::wstring &orig_pa std::vector changed_files=cd->getChangedFiles((*it_dir).id); std::sort(changed_files.begin(), changed_files.end()); - if(!changed_files.empty()) + for(size_t i=0;igetRandomNumber(); - if(tmp[i].last_modified>0) - tmp[i].last_modified*=-1; - else if(tmp[i].last_modified==0) - tmp[i].last_modified=-1; - } - else + tmp[i].last_modified*=Server->getRandomNumber(); + if(tmp[i].last_modified>0) + tmp[i].last_modified*=-1; + else if(tmp[i].last_modified==0) + tmp[i].last_modified=-1; + } + else + { + std::vector::const_iterator it_db_file=std::lower_bound(db_files.begin(), db_files.end(), tmp[i]); + if( it_db_file!=db_files.end() + && (*it_db_file).name==tmp[i].name + && (*it_db_file).isdir==tmp[i].isdir + && (*it_db_file).last_modified<0 ) { - std::vector::const_iterator it_db_file=std::lower_bound(db_files.begin(), db_files.end(), tmp[i]); - if( it_db_file!=db_files.end() - && (*it_db_file).name==tmp[i].name - && (*it_db_file).isdir==tmp[i].isdir - && (*it_db_file).last_modified<0 ) + VSSLog(L"File changed at last backup: "+ tmp[i].name, LL_DEBUG); + + if( tmp[i].last_modifiedlast_modified; - } - else - { - VSSLog("Modification time indicates the file may have another change", LL_DEBUG); - tmp[i].last_modified*=Server->getRandomNumber(); - if(tmp[i].last_modified>0) - tmp[i].last_modified*=-1; - } + tmp[i].last_modified=it_db_file->last_modified; + } + else + { + VSSLog("Modification time indicates the file may have another change", LL_DEBUG); + tmp[i].last_modified*=Server->getRandomNumber(); + if(tmp[i].last_modified>0) + tmp[i].last_modified*=-1; } } }