summaryrefslogtreecommitdiff
path: root/include/asterisk/utils.h
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-01-20 04:53:17 +0000
committerMark Spencer <markster@digium.com>2005-01-20 04:53:17 +0000
commitbec6aaf064173515048335cc7f6c4da3a08b2844 (patch)
tree1283b173d9f6757a0c18d0c32f19215946885284 /include/asterisk/utils.h
parent442747adb636188035f1906706cdd320cd605454 (diff)
Fix ODBC to clear title each time (bug #3379)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4851 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/utils.h')
-rwxr-xr-xinclude/asterisk/utils.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h
index dd1141985..0669c08a0 100755
--- a/include/asterisk/utils.h
+++ b/include/asterisk/utils.h
@@ -134,6 +134,24 @@ extern int test_for_thread_safety(void);
extern const char *ast_inet_ntoa(char *buf, int bufsiz, struct in_addr ia);
extern int ast_utils_init(void);
+/* The realloca lets us ast_restrdupa(), but you can't mix any other ast_strdup calls! */
+
+struct ast_realloca {
+ char *ptr;
+ int alloclen;
+};
+
+#define ast_restrdupa(ra, s) \
+ ({ \
+ if ((ra)->ptr && strlen(s) + 1 < (ra)->alloclen) { \
+ strcpy((ra)->ptr, s); \
+ } else { \
+ (ra)->ptr = alloca(strlen(s) + 1 - (ra)->alloclen); \
+ if ((ra)->ptr) (ra)->alloclen = strlen(s) + 1; \
+ } \
+ (ra)->ptr; \
+ })
+
#ifdef inet_ntoa
#undef inet_ntoa
#endif