summaryrefslogtreecommitdiff
path: root/lib/shash.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2009-10-28 11:10:36 -0700
committerBen Pfaff <blp@nicira.com>2009-11-04 15:01:02 -0800
commit837e80977cdd9fda61fb0789bfd6b64c7639c25a (patch)
tree35d86973eba965ca6e4a828339f3a4e66a8c9510 /lib/shash.c
parent3adb8bf04838d8fa5a382f501437b62af99ed874 (diff)
downloadopenvswitch-837e80977cdd9fda61fb0789bfd6b64c7639c25a.tar.gz
shash: New function shash_find_and_delete().
Diffstat (limited to 'lib/shash.c')
-rw-r--r--lib/shash.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/shash.c b/lib/shash.c
index da33fe8b6..5d8ecfa6c 100644
--- a/lib/shash.c
+++ b/lib/shash.c
@@ -100,6 +100,19 @@ shash_find_data(const struct shash *sh, const char *name)
return node ? node->data : NULL;
}
+void *
+shash_find_and_delete(struct shash *sh, const char *name)
+{
+ struct shash_node *node = shash_find(sh, name);
+ if (node) {
+ void *data = node->data;
+ shash_delete(sh, node);
+ return data;
+ } else {
+ return NULL;
+ }
+}
+
struct shash_node *
shash_first(const struct shash *shash)
{