From: Carl N Baldwin Date: Tue, 18 Oct 2005 14:26:13 +0000 (-0600) Subject: Just fixed a few things that I thought about last night X-Git-Tag: release-0.4~98 X-Git-Url: http://git.pippins.net/embedvideo/.git/static/images/%22%22.%24thumbnail.%22/%7Badd%7D?a=commitdiff_plain;h=412927c32bdfe547c74576319763f234b72d982d;p=backups%2F.git Just fixed a few things that I thought about last night --- diff --git a/main.cc b/main.cc index b532f48..407d572 100644 --- a/main.cc +++ b/main.cc @@ -2,6 +2,7 @@ #include #include #include +#include #include @@ -85,30 +86,43 @@ int main() { // Now divide the two sets into three sets (new, deleted and updated ) FileDataPtrCmp cmp; - file_set new_set; - set_difference( current.begin(), current.end(), + file_set added; + set_difference( current.begin(), current.end(), backed_up.begin(), backed_up.end(), - inserter( new_set, new_set.begin() ), + inserter( added, added.begin() ), cmp ); file_set deleted; set_difference( backed_up.begin(), backed_up.end(), - current.begin(), current.end(), + current.begin(), current.end(), inserter( deleted, deleted.begin() ), cmp ); - // backed_up should *definitely* be the first set here file_set updated; - set_difference( backed_up.begin(), backed_up.end(), - current.begin(), current.end(), - inserter( updated, updated.begin() ), - cmp ); + set_union( current.begin(), current.end(), + backed_up.begin(), backed_up.end(), + inserter( updated, updated.begin() ), + cmp ); + + { // This little block will copy the last_backup_date from the second set to the first + file_set updated_mirror; + set_union( current.begin(), current.end(), + backed_up.begin(), backed_up.end(), + inserter( updated_mirror, updated_mirror.begin() ), + cmp ); + + // TODO Now we need to copy the last_backup_date from + file_set::iterator i = updated.begin(), j = updated_mirror.begin(); + for( ; i != updated.end(); ++i, ++j ) { + (*i)->setLastBackupDate( (*j)->getLastBackupDate() ); + } + } // Now find the list of files to backup. file_set backup_list; // backup all new files - copy( new_set.begin(), new_set.end(), inserter( backup_list, backup_list.begin() ) ); + copy( added.begin(), added.end(), inserter( backup_list, backup_list.begin() ) ); // backup already backed-up files that have changed since the last backup date. for( file_set::iterator i = updated.begin(); i != updated.end(); ++i ) { @@ -122,7 +136,8 @@ int main() { // Now, sort the non-backed-up list my last_backup_date and back-fill // Remove deleted files from the database. - // TODO CNB You were working in here. + // TODO CNB You were working in here. Actually, just delete all records in + // the database and re-populate with the current list. const char *delete_sql = "delete from filedata where filename = :filename"; sqlite3_stmt *ppStmt;