for (list<Comparison*>::iterator it = comparisons.begin(); it != comparisons.end(); ++it)
{
- const Snapper* s = (*it)->getSnapper();
-
- for (MetaSnappers::iterator it2 = meta_snappers.begin(); it2 != meta_snappers.end(); ++it2)
- {
- if (it2->is_equal(s))
- it2->dec_use_count();
- }
-
- delete *it;
+ delete_comparison(it);
}
}
-Comparison*
+list<Comparison*>::iterator
Client::find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1,
Snapshots::const_iterator snapshot2)
{
{
if ((*it)->getSnapper() == snapper && (*it)->getSnapshot1() == snapshot1 &&
(*it)->getSnapshot2() == snapshot2)
- return *it;
+ return it;
}
throw NoComparison();
}
-Comparison*
+list<Comparison*>::iterator
Client::find_comparison(Snapper* snapper, unsigned int number1, unsigned int number2)
{
Snapshots& snapshots = snapper->getSnapshots();
}
+void
+Client::delete_comparison(list<Comparison*>::iterator it)
+{
+ const Snapper* s = (*it)->getSnapper();
+
+ for (MetaSnappers::iterator it2 = meta_snappers.begin(); it2 != meta_snappers.end(); ++it2)
+ {
+ if (it2->is_equal(s))
+ it2->dec_use_count();
+ }
+
+ delete *it;
+}
+
+
void
Client::add_lock(const string& config_name)
{
check_permission(conn, msg, *it);
- // TODO
+ list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
+
+ delete_comparison(it2);
+ comparisons.erase(it2);
DBus::MessageMethodReturn reply(msg);
check_permission(conn, msg, *it);
- Comparison* comparison = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- const Files& files = comparison->getFiles();
+ const Files& files = (*it2)->getFiles();
DBus::MessageMethodReturn reply(msg);
check_permission(conn, msg, *it);
- Comparison* comparison = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- Files& files = comparison->getFiles();
+ Files& files = (*it2)->getFiles();
Files::iterator it3 = files.find(filename);
if (it3 == files.end())
check_permission(conn, msg, *it);
- Comparison* comparison = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- Files& files = comparison->getFiles();
+ Files& files = (*it2)->getFiles();
for (list<Undo>::const_iterator it2 = undos.begin(); it2 != undos.end(); ++it2)
{
check_permission(conn, msg, *it);
- Comparison* comparison = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison*>::iterator it3 = find_comparison(it->getSnapper(), num1, num2);
- Files& files = comparison->getFiles();
+ Files& files = (*it3)->getFiles();
for (Files::iterator it2 = files.begin(); it2 != files.end(); ++it2)
{
check_permission(conn, msg, *it);
- Comparison* comparison = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
- vector<UndoStep> undo_steps = comparison->getUndoSteps();
+ vector<UndoStep> undo_steps = (*it2)->getUndoSteps();
DBus::MessageMethodReturn reply(msg);
check_permission(conn, msg, *it);
- Comparison* comparison = find_comparison(it->getSnapper(), num1, num2);
+ list<Comparison*>::iterator it2 = find_comparison(it->getSnapper(), num1, num2);
lock.unlock();
- bool ret = comparison->doUndoStep(undo_step);
+ bool ret = (*it2)->doUndoStep(undo_step);
lock.lock();
Client(const string& name);
~Client();
- Comparison* find_comparison(Snapper* snapper, unsigned int number1, unsigned int number2);
+ list<Comparison*>::iterator find_comparison(Snapper* snapper, unsigned int number1,
+ unsigned int number2);
- Comparison* find_comparison(Snapper* snapper, Snapshots::const_iterator snapshot1,
- Snapshots::const_iterator snapshot2);
+ list<Comparison*>::iterator find_comparison(Snapper* snapper,
+ Snapshots::const_iterator snapshot1,
+ Snapshots::const_iterator snapshot2);
+
+ void delete_comparison(list<Comparison*>::iterator);
void add_lock(const string& config_name);
void remove_lock(const string& config_name);