summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-05-30 20:31:53 +0200
committerCarl Hetherington <cth@carlh.net>2023-05-30 20:31:53 +0200
commitada78c153ca05c2bd3cefcd4b3497af7dde7ec95 (patch)
treeaff8805edc083a2339e738ee8a5632abb55dcea5 /src/lib
parentbcf99dcfcf498d459e60be72aabcf34193fbe4c5 (diff)
Don't show warning when only removing an empty DKDM folder (#2541).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/dkdm_wrapper.cc12
-rw-r--r--src/lib/dkdm_wrapper.h7
2 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/dkdm_wrapper.cc b/src/lib/dkdm_wrapper.cc
index f5eb435f6..016c77c3f 100644
--- a/src/lib/dkdm_wrapper.cc
+++ b/src/lib/dkdm_wrapper.cc
@@ -131,3 +131,15 @@ DKDMGroup::contains(string dkdm_id) const
return false;
}
+
+bool
+DKDMGroup::contains_dkdm() const
+{
+ for (auto child: _children) {
+ if (child->contains_dkdm()) {
+ return true;
+ }
+ }
+
+ return false;
+}
diff --git a/src/lib/dkdm_wrapper.h b/src/lib/dkdm_wrapper.h
index d15f017c5..7182e5e85 100644
--- a/src/lib/dkdm_wrapper.h
+++ b/src/lib/dkdm_wrapper.h
@@ -38,6 +38,8 @@ public:
virtual ~DKDMBase () {}
virtual std::string name () const = 0;
virtual void as_xml (xmlpp::Element *) const = 0;
+ /** @return true if this thing is, or contains, any actual DKDM */
+ virtual bool contains_dkdm() const = 0;
static std::shared_ptr<DKDMBase> read (cxml::ConstNodePtr node);
@@ -63,6 +65,9 @@ public:
std::string name () const override;
void as_xml (xmlpp::Element *) const override;
+ bool contains_dkdm() const override {
+ return true;
+ }
dcp::EncryptedKDM dkdm () const {
return _dkdm;
@@ -86,6 +91,8 @@ public:
void as_xml (xmlpp::Element *) const override;
+ bool contains_dkdm() const override;
+
std::list<std::shared_ptr<DKDMBase>> children () const {
return _children;
}