---
libvirt-gconfig/libvirt-gconfig-object-private.h | 1 +
libvirt-gconfig/libvirt-gconfig-object.c | 13 +++++++++++++
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-object-private.h
b/libvirt-gconfig/libvirt-gconfig-object-private.h
index 6d01e26..922b0f3 100644
--- a/libvirt-gconfig/libvirt-gconfig-object-private.h
+++ b/libvirt-gconfig/libvirt-gconfig-object-private.h
@@ -72,6 +72,7 @@ void gvir_config_object_replace_child_with_attribute(GVirConfigObject
*object,
const char *attr_value);
void gvir_config_object_delete_child(GVirConfigObject *object,
const char *child_name);
+void gvir_config_object_delete_children(GVirConfigObject *object, const char
*child_name);
void gvir_config_object_set_child(GVirConfigObject *object,
xmlNodePtr child);
diff --git a/libvirt-gconfig/libvirt-gconfig-object.c
b/libvirt-gconfig/libvirt-gconfig-object.c
index 7fb8b69..dbb63a5 100644
--- a/libvirt-gconfig/libvirt-gconfig-object.c
+++ b/libvirt-gconfig/libvirt-gconfig-object.c
@@ -493,9 +493,22 @@ gvir_config_object_delete_child(GVirConfigObject *object,
(gpointer)child_name);
}
+static gboolean remove_always(xmlNodePtr node, gpointer opaque)
+{
+ maybe_unlink_node(node, opaque);
+ return TRUE;
}
+G_GNUC_INTERNAL void
+gvir_config_object_delete_children(GVirConfigObject *object, const char *child_name)
+{
+ g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object));
+ g_return_if_fail(child_name != NULL);
+
+ gvir_config_object_foreach_child(object, NULL, remove_always,
+ (gpointer)child_name);
+}
G_GNUC_INTERNAL void
gvir_config_object_set_node_content(GVirConfigObject *object,
--
1.7.7.5