- char *sqliteErrMsg = 0;
- file_set previous_files;
- rc = sqlite3_exec( db, "select * from filedata;", populate_set, &previous_files, &sqliteErrMsg );
- if( SQLITE_OK != rc ) {
- cerr << "Problem with database. Message is..." << endl;
- cerr << sqliteErrMsg << endl;
+ // Now divide the two sets into three sets (added, deleted and common )
+ file_set added, deleted, common, old_common;
+ partition_sets( current, backed_up, added, common, old_common, deleted );
+
+ // Now find the list of files to backup.
+ file_set backups;
+
+ // backup all added files
+ copy( added.begin(), added.end(), inserter( backups, backups.begin() ) );
+
+ // Backup files that have been modified
+ file_set::iterator i = common.begin(), j = old_common.begin();
+ for( ; i != common.end(); ++i, ++j ) {
+ (*i)->setLastBackupDate( (*j)->getLastBackupDate() );
+
+ if( needs_backup( *j, *i ) ) backups.insert( *i );