|
|
|
@ -1117,30 +1117,35 @@ int __attribute__((format(printf, 3, 4))) ast_str_append(
|
|
|
|
|
* \details
|
|
|
|
|
* There are a few query functions scattered around that need an ast_str in which
|
|
|
|
|
* to assemble the results but it's not always convenient to create an ast_str
|
|
|
|
|
* and ensure it's freed just to print a log message. For example...
|
|
|
|
|
* and ensure it's freed just to print a log message. For example:
|
|
|
|
|
*
|
|
|
|
|
* \code
|
|
|
|
|
* struct ast_str *temp = ast_str_create(128);
|
|
|
|
|
* ast_log(LOG_INFO, "Format caps: %s\n", ast_format_cap_get_names(caps, &temp));
|
|
|
|
|
* ast_free(temp);
|
|
|
|
|
* \endcode
|
|
|
|
|
*
|
|
|
|
|
* That's not bad if you only have to do it once but some of our code that deals
|
|
|
|
|
* with streams and codecs is pretty complex and good instrumentation is essential.
|
|
|
|
|
* The aim of this function is to make that easier.
|
|
|
|
|
*
|
|
|
|
|
* With this macro, the above code can be simplified as follows...
|
|
|
|
|
* \example
|
|
|
|
|
* With this macro, the above code can be simplified:
|
|
|
|
|
*
|
|
|
|
|
* \code
|
|
|
|
|
* ast_log(LOG_INFO, "Format caps: %s\n",
|
|
|
|
|
* ast_str_tmp(128, ast_format_cap_get_names(caps, &STR_TMP));
|
|
|
|
|
* \endcode
|
|
|
|
|
*
|
|
|
|
|
* STR_TMP will always be a reference to the temporary ast_str created
|
|
|
|
|
* by the macro. Its scope is limited by the macro so you can use it multiple
|
|
|
|
|
* times without conflict.
|
|
|
|
|
* times without conflict:
|
|
|
|
|
*
|
|
|
|
|
* \example
|
|
|
|
|
* \code
|
|
|
|
|
* ast_log(LOG_INFO, "Format caps in: %s Format caps out: %s\n",
|
|
|
|
|
* ast_str_tmp(128, ast_format_cap_get_names(caps_in, &STR_TMP),
|
|
|
|
|
* ast_str_tmp(128, ast_format_cap_get_names(caps_out, &STR_TMP)
|
|
|
|
|
* );
|
|
|
|
|
* \endcode
|
|
|
|
|
*
|
|
|
|
|
* \warning
|
|
|
|
|
* The returned string is stack allocated so don't go overboard.
|
|
|
|
|