diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-05-20 16:30:13 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-05-20 16:30:13 +0000 |
commit | cfd99de79e83b24f1f9aa407e194affbb1573dfc (patch) | |
tree | 64dd4eded77bcd188fbbfead9571d7128314ec5e /utils.c | |
parent | c862bed097b69d753183d2948212755dda02c98f (diff) |
make IF dialplan function handle quoted strings properly (bug #4322, with API mods)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5750 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'utils.c')
-rwxr-xr-x | utils.c | 36 |
1 files changed, 26 insertions, 10 deletions
@@ -33,17 +33,33 @@ static char base64[64]; static char b2a[256]; -char *ast_strip(char *buf) +char *ast_strip(char *s) { - char *start; - /* Strip off trailing whitespace, returns, etc */ - while (!ast_strlen_zero(buf) && (buf[strlen(buf)-1]<33)) - buf[strlen(buf)-1] = '\0'; - start = buf; - /* Strip off leading whitespace, returns, etc */ - while (*start && (*start < 33)) - *start++ = '\0'; - return start; + char *e; + + while (*s && (*s < 33)) s++; + e = s + strlen(s) - 1; + while ((e > s) && (*e < 33)) e--; + *++e = '\0'; + + return s; +} + +char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes) +{ + char *e; + char *q; + + s = ast_strip(s); + if ((q = strchr(beg_quotes, *s))) { + e = s + strlen(s) - 1; + if (*e == *(end_quotes + (q - beg_quotes))) { + s++; + *e = '\0'; + } + } + + return s; } #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__) |