mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -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(®ex_function); | ||||
| 	res |= ast_custom_function_unregister(&array_function); | ||||
| 	res |= ast_custom_function_unregister("e_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(®ex_function); | ||||
| 	res |= ast_custom_function_register(&array_function); | ||||
| 	res |= ast_custom_function_register("e_function); | ||||
| 	res |= ast_custom_function_register(&len_function); | ||||
| 	res |= ast_custom_function_register(&strftime_function); | ||||
| 	res |= ast_custom_function_register(&strptime_function); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user