From ce3ccb8da08b138908f25d8b6326d98a37b93040 Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Thu, 26 Nov 2009 21:28:28 +0000 Subject: [PATCH] add switch_caller_extension_add_application_printf() git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15688 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_caller.h | 11 +++++++++++ src/switch_caller.c | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/include/switch_caller.h b/src/include/switch_caller.h index ab21447bd4..7c363f9cac 100644 --- a/src/include/switch_caller.h +++ b/src/include/switch_caller.h @@ -161,6 +161,17 @@ SWITCH_DECLARE(void) switch_caller_extension_add_application(_In_ switch_core_se _In_ switch_caller_extension_t *caller_extension, _In_z_ const char *application_name, _In_z_ const char *extra_data); +/*! + \brief Add an application (instruction) to the given extension + \param session session associated with the extension (bound by scope) + \param caller_extension extension to add the application to + \param application_name the name of the application + \param fmt optional argument to the application (printf format string) +*/ +SWITCH_DECLARE(void) switch_caller_extension_add_application_printf(_In_ switch_core_session_t *session, + _In_ switch_caller_extension_t *caller_extension, + _In_z_ const char *application_name, _In_z_ const char *fmt, ...); + /*! \brief Get the value of a field in a caller profile based on it's name diff --git a/src/switch_caller.c b/src/switch_caller.c index 2ea7dcc4b5..e9e089724f 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -394,6 +394,25 @@ SWITCH_DECLARE(switch_caller_extension_t *) switch_caller_extension_new(switch_c return caller_extension; } + +SWITCH_DECLARE(void) switch_caller_extension_add_application_printf(switch_core_session_t *session, + switch_caller_extension_t *caller_extension, const char *application_name, + const char *fmt, ...) +{ + va_list ap; + char *data = NULL; + + va_start(ap, fmt); + switch_vasprintf(&data, fmt, ap); + va_end(ap); + + if (data) { + switch_caller_extension_add_application(session, caller_extension, application_name, data); + free(data); + } +} + + SWITCH_DECLARE(void) switch_caller_extension_add_application(switch_core_session_t *session, switch_caller_extension_t *caller_extension, const char *application_name, const char *application_data)