On Tue, Apr 17, 2012 at 10:44:02AM -0400, Stefan Berger wrote: > Implement function to remove all entries of a hash table. > > --- > src/libvirt_private.syms | 1 + > src/util/virhash.c | 25 +++++++++++++++++++++++++ > src/util/virhash.h | 5 +++++ > 3 files changed, 31 insertions(+) > > Index: libvirt-acl/src/libvirt_private.syms > =================================================================== > --- libvirt-acl.orig/src/libvirt_private.syms > +++ libvirt-acl/src/libvirt_private.syms > @@ -578,6 +578,7 @@ virHashForEach; > virHashFree; > virHashGetItems; > virHashLookup; > +virHashRemoveAll; > virHashRemoveEntry; > virHashRemoveSet; > virHashSearch; > Index: libvirt-acl/src/util/virhash.c > =================================================================== > --- libvirt-acl.orig/src/util/virhash.c > +++ libvirt-acl/src/util/virhash.c > @@ -575,6 +575,31 @@ virHashRemoveSet(virHashTablePtr table, > return count; > } > > +static int > +_virHashRemoveAllIter(const void *payload ATTRIBUTE_UNUSED, > + const void *name ATTRIBUTE_UNUSED, > + const void *data ATTRIBUTE_UNUSED) > +{ > + return 1; > +} > + > +/** > + * virHashRemoveAll > + * @table: the hash table to clear > + * > + * Free the hash @table's contents. The userdata is > + * deallocated with the function provided at creation time. > + * > + * Returns the number of items removed on success, -1 on failure > + */ > +ssize_t > +virHashRemoveAll(virHashTablePtr table) > +{ > + return virHashRemoveSet(table, > + _virHashRemoveAllIter, > + NULL); > +} > + > /** > * virHashSearch: > * @table: the hash table to search > Index: libvirt-acl/src/util/virhash.h > =================================================================== > --- libvirt-acl.orig/src/util/virhash.h > +++ libvirt-acl/src/util/virhash.h > @@ -127,6 +127,11 @@ int virHashRemoveEntry(virHashTablePtr t > const void *name); > > /* > + * Remove all entries from the hash table. > + */ > +ssize_t virHashRemoveAll(virHashTablePtr table); > + > +/* > * Retrieve the userdata. > */ > void *virHashLookup(virHashTablePtr table, const void *name); > There is certainly a way to implement this in a more efficient fashion but that's fine :-) ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list