Skip to content
Snippets Groups Projects
Commit a4734960 authored by Matt O'Gorman's avatar Matt O'Gorman
Browse files

added function QUOTE into strings, which allows

for quoted strings, and escapes them properly.
slightly modified patch from bug #6257


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10934 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent c05fc829
No related merge requests found
......@@ -204,6 +204,36 @@ static struct ast_custom_function array_function = {
"entire argument, since Set can take multiple arguments itself.\n",
};
static char *builtin_function_quote(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
{
char *bufptr = buf, *dataptr = data;
*bufptr++ = '"';
for (; bufptr < buf + len - 1; dataptr++) {
if (*dataptr == '\\') {
*bufptr++ = '\\';
*bufptr++ = '\\';
} else if (*dataptr == '"') {
*bufptr++ = '\\';
*bufptr++ = '"';
} else if (*dataptr == '\0') {
break;
} else {
*bufptr++ = *dataptr;
}
}
*bufptr++ = '"';
*bufptr = '\0';
return buf;
}
static struct ast_custom_function quote_function = {
.name = "QUOTE",
.synopsis = "Quotes a given string, escaping embedded quotes as necessary",
.syntax = "QUOTE(<string>)",
.read = builtin_function_quote,
};
static int len(struct ast_channel *chan, char *cmd, char *data, char *buf,
size_t len)
{
......@@ -402,6 +432,7 @@ int unload_module(void)
res |= ast_custom_function_unregister(&filter_function);
res |= ast_custom_function_unregister(&regex_function);
res |= ast_custom_function_unregister(&array_function);
res |= ast_custom_function_unregister(&quote_function);
res |= ast_custom_function_unregister(&len_function);
res |= ast_custom_function_unregister(&strftime_function);
res |= ast_custom_function_unregister(&strptime_function);
......@@ -419,6 +450,7 @@ int load_module(void)
res |= ast_custom_function_register(&filter_function);
res |= ast_custom_function_register(&regex_function);
res |= ast_custom_function_register(&array_function);
res |= ast_custom_function_register(&quote_function);
res |= ast_custom_function_register(&len_function);
res |= ast_custom_function_register(&strftime_function);
res |= ast_custom_function_register(&strptime_function);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment