diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 876a0667a8..d55ecac949 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -393,6 +393,15 @@ SWITCH_DECLARE(char *) switch_core_session_strdup(switch_core_session_t *session */ SWITCH_DECLARE(char *) switch_core_strdup(switch_memory_pool_t *pool, const char *todup); +/*! + \brief printf-style style printing routine. The data is output to a string allocated from the session + \param session a session to use for allocation + \param fmt The format of the string + \param ... The arguments to use while printing the data + \return The new string +*/ +SWITCH_DECLARE(char *) switch_core_session_sprintf(switch_core_session_t *session, const char *fmt, ...); + /*! \brief Retrieve the memory pool from a session \param session the session to retrieve the pool from diff --git a/src/switch_core.c b/src/switch_core.c index 98ecc09d60..ee4ac2e8de 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1465,6 +1465,22 @@ SWITCH_DECLARE(char *) switch_core_permanent_strdup(const char *todup) return duped; } +SWITCH_DECLARE(char *) switch_core_session_sprintf(switch_core_session_t *session, const char *fmt, ...) +{ + va_list ap; + char *result = NULL; + + assert(session != NULL); + assert(session->pool != NULL); + va_start(ap, fmt); + + result = apr_pvsprintf(session->pool ,fmt, ap); + + va_end(ap); + + return result; +} + SWITCH_DECLARE(char *) switch_core_session_strdup(switch_core_session_t *session, const char *todup) {