From: Arvin Schnell Date: Tue, 23 Oct 2018 07:43:16 +0000 (+0200) Subject: - give reason why a snapshot cannot be deleted X-Git-Tag: v0.8.0~24^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e9982ef4bf507f4edb71056e040003a8778ada9;p=thirdparty%2Fsnapper.git - give reason why a snapshot cannot be deleted --- diff --git a/client/snapper.cc b/client/snapper.cc index 84f37e47..31587c77 100644 --- a/client/snapper.cc +++ b/client/snapper.cc @@ -790,29 +790,31 @@ help_delete() void filter_undeletables(ProxySnapshots& snapshots, vector& nums) { - vector undeletables; - - undeletables.push_back(snapshots.begin()); + auto filter = [&snapshots, &nums](ProxySnapshots::const_iterator undeletable, const string& message) + { + if (undeletable == snapshots.end()) + return; - ProxySnapshots::const_iterator default_snapshot = snapshots.getDefault(); - if (default_snapshot != snapshots.end()) - undeletables.push_back(default_snapshot); + unsigned int num = undeletable->getNum(); - ProxySnapshots::const_iterator active_snapshot = snapshots.getActive(); - if (active_snapshot != snapshots.end()) - undeletables.push_back(active_snapshot); - - for (ProxySnapshots::const_iterator undeletable : undeletables) - { vector::iterator keep = find_if(nums.begin(), nums.end(), - [undeletable](ProxySnapshots::iterator it){ return undeletable->getNum() == it->getNum(); }); + [num](ProxySnapshots::iterator it){ return num == it->getNum(); }); if (keep != nums.end()) { - cerr << sformat(_("Cannot delete snapshot %d."), (*keep)->getNum()) << endl; + cerr << sformat(message, num) << endl; nums.erase(keep); } - } + }; + + ProxySnapshots::const_iterator current_snapshot = snapshots.begin(); + filter(current_snapshot, _("Cannot delete snapshot %d since it is the current system.")); + + ProxySnapshots::const_iterator active_snapshot = snapshots.getActive(); + filter(active_snapshot, _("Cannot delete snapshot %d since it is the currently mounted snapshot.")); + + ProxySnapshots::const_iterator default_snapshot = snapshots.getDefault(); + filter(default_snapshot, _("Cannot delete snapshot %d since it is the next to be mounted snapshot.")); }