replace ast_build_string() with ast_str_*() functions.

This makes the code easier to follow and saves some
copies to intermediate buffers.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48515 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Luigi Rizzo
2006-12-16 09:33:31 +00:00
parent b2bd05ee83
commit 20b382cfff
4 changed files with 158 additions and 156 deletions

View File

@@ -336,6 +336,27 @@ struct ast_str * attribute_malloc ast_str_create(size_t init_len),
}
)
/*!
* Make space in a new string (e.g. to read in data from a file)
*/
AST_INLINE_API(
int ast_str_make_space(struct ast_str **buf, size_t new_len),
{
if (new_len <= (*buf)->len)
return 0; /* success */
if ((*buf)->ts == DS_ALLOCA || (*buf)->ts == DS_STATIC)
return -1; /* cannot extend */
*buf = ast_realloc(*buf, new_len + sizeof(struct ast_str));
if (*buf == NULL) /* XXX watch out, we leak memory here */
return -1;
if ((*buf)->ts != DS_MALLOC)
pthread_setspecific((*buf)->ts->key, *buf);
(*buf)->len = new_len;
return 0;
}
)
#define ast_str_alloca(init_len) \
({ \
struct ast_str *buf; \