+
+ // Get the list of previously backed up files from the database.
+ sqlite3 *db;
+
+ const char *dbname = "test.db";
+ int rc = sqlite3_open( dbname, &db );
+ if( SQLITE_OK != rc ) {
+ cerr << "Cannot open database: " << dbname << ". Error message is..." << endl;
+ cerr << sqlite3_errmsg(db) << endl;
+ }
+
+ 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;
+ }
+
+ sqlite3_close( db );
+
+ for( file_set::iterator i = previous_files.begin(); i != previous_files.end(); ++i ) {
+ cout << (*i)->getFileName() << endl;
+ }
+
+ // Now divide the two sets into three sets (union and set differences)
+ FileDataPtrCmp cmp;
+
+ file_set new_set;
+ set_difference( current_files.begin(), current_files.end(),
+ previous_files.begin(), previous_files.end(),
+ inserter( new_set, new_set.begin() ),
+ cmp );
+
+ file_set deleted_set;
+ set_difference( previous_files.begin(), previous_files.end(),
+ current_files.begin(), current_files.end(),
+ inserter( deleted_set, deleted_set.begin() ),
+ cmp );
+
+ // previous_files *should* definitely be the first set here
+ file_set common_set;
+ set_difference( previous_files.begin(), previous_files.end(),
+ current_files.begin(), current_files.end(),
+ inserter( common_set, common_set.begin() ),
+ cmp );