From 08381c7a1797a176374eb078bd3e8afbf25f3aa2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 Jul 2008 17:36:47 +0000 Subject: [PATCH] add switch_xml_unbind_search_function_ptr git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8907 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_xml.h | 1 + src/switch_xml.cpp | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/include/switch_xml.h b/src/include/switch_xml.h index 237f24969b..b7493ea1bc 100644 --- a/src/include/switch_xml.h +++ b/src/include/switch_xml.h @@ -362,6 +362,7 @@ SWITCH_DECLARE(switch_status_t) switch_xml_bind_search_function_removable(switch switch_xml_section_t sections, void *user_data, switch_xml_binding_t **binding); SWITCH_DECLARE(switch_status_t) switch_xml_unbind_search_function(switch_xml_binding_t **binding); +SWITCH_DECLARE(switch_status_t) switch_xml_unbind_search_function_ptr(switch_xml_search_function_t function); ///\brief parse a string for a list of sections ///\param str a | delimited list of section names diff --git a/src/switch_xml.cpp b/src/switch_xml.cpp index eaaccbb066..22b4591d05 100644 --- a/src/switch_xml.cpp +++ b/src/switch_xml.cpp @@ -166,6 +166,28 @@ SWITCH_DECLARE(switch_status_t) switch_xml_unbind_search_function(switch_xml_bin return status; } +SWITCH_DECLARE(switch_status_t) switch_xml_unbind_search_function_ptr(switch_xml_search_function_t function) +{ + switch_xml_binding_t *ptr, *last = NULL; + switch_status_t status = SWITCH_STATUS_FALSE; + + switch_mutex_lock(XML_LOCK); + for (ptr = BINDINGS; ptr; ptr = ptr->next) { + if (ptr->function == function) { + if (last) { + last->next = ptr->next; + } else { + BINDINGS = ptr->next; + } + status = SWITCH_STATUS_SUCCESS; + } + last = ptr; + } + switch_mutex_unlock(XML_LOCK); + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_xml_bind_search_function(switch_xml_search_function_t function, switch_xml_section_t sections, void *user_data) { switch_xml_binding_t *binding = NULL, *ptr = NULL;