From ada27c2f70a1fbf1d609c3403469dee51403db40 Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Wed, 7 Apr 2010 14:55:55 -0400 Subject: [PATCH] add switch_channel_export_variable_printf --- src/include/switch_channel.h | 2 ++ src/switch_channel.c | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/include/switch_channel.h b/src/include/switch_channel.h index 5529d9af66..84b0f7fdaf 100644 --- a/src/include/switch_channel.h +++ b/src/include/switch_channel.h @@ -249,6 +249,8 @@ SWITCH_DECLARE(const char *) switch_channel_get_variable_partner(switch_channel_ SWITCH_DECLARE(switch_status_t) switch_channel_export_variable_var_check(switch_channel_t *channel, const char *varname, const char *value, switch_bool_t var_check, switch_bool_t nolocal); #define switch_channel_export_variable(_channel, _varname, _value, _nolocal) switch_channel_export_variable_var_check(_channel, _varname, _value, SWITCH_TRUE, _nolocal) +SWITCH_DECLARE(switch_status_t) switch_channel_export_variable_printf(switch_channel_t *channel, const char *varname, switch_bool_t nolocal, const char *fmt, ...); + /*! \brief Retrieve a variable from a given channel diff --git a/src/switch_channel.c b/src/switch_channel.c index ba9429721a..6019836c15 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -768,6 +768,30 @@ done: return status; } +SWITCH_DECLARE(switch_status_t) switch_channel_export_variable_printf(switch_channel_t *channel, const char *varname, switch_bool_t nolocal, const char *fmt, ...) +{ + switch_status_t status = SWITCH_STATUS_FALSE; + char *data = NULL; + va_list ap; + int ret; + + switch_assert(channel != NULL); + + va_start(ap, fmt); + ret = switch_vasprintf(&data, fmt, ap); + va_end(ap); + + if (ret == -1) { + return SWITCH_STATUS_FALSE; + } + + status = switch_channel_export_variable(channel, varname, data, nolocal); + + free(data); + + return status; +} + SWITCH_DECLARE(switch_status_t) switch_channel_set_variable_var_check(switch_channel_t *channel, const char *varname, const char *value, switch_bool_t var_check) {