aboutsummaryrefslogtreecommitdiffstats
path: root/funcs/func_strings.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-02-15 00:59:01 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-02-15 00:59:01 +0000
commitc97e52dc7ed29c597dd4198020eda8edb8ee69ac (patch)
tree658dcdb4b7c86e8d99f73885c8b24b7a4a846ac9 /funcs/func_strings.c
parent728842d73f9d7c9898d6046f024827d4262e75a4 (diff)
add KEYPADHASH dialplan function (issue #6441)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10113 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'funcs/func_strings.c')
-rw-r--r--funcs/func_strings.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/funcs/func_strings.c b/funcs/func_strings.c
index 4d992b1b5..e24fc1ea4 100644
--- a/funcs/func_strings.c
+++ b/funcs/func_strings.c
@@ -349,6 +349,49 @@ static struct ast_custom_function eval_function = {
.read = function_eval,
};
+static int keypadhash(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
+{
+ char *bufptr, *dataptr;
+
+ for (bufptr = buf, dataptr = data; bufptr < buf + len - 1; dataptr++) {
+ if (*dataptr == '1') {
+ *bufptr++ = '1';
+ } else if (strchr("AaBbCc2", *dataptr)) {
+ *bufptr++ = '2';
+ } else if (strchr("DdEeFf3", *dataptr)) {
+ *bufptr++ = '3';
+ } else if (strchr("GgHhIi4", *dataptr)) {
+ *bufptr++ = '4';
+ } else if (strchr("JjKkLl5", *dataptr)) {
+ *bufptr++ = '5';
+ } else if (strchr("MmNnOo6", *dataptr)) {
+ *bufptr++ = '6';
+ } else if (strchr("PpQqRrSs7", *dataptr)) {
+ *bufptr++ = '7';
+ } else if (strchr("TtUuVv8", *dataptr)) {
+ *bufptr++ = '8';
+ } else if (strchr("WwXxYyZz9", *dataptr)) {
+ *bufptr++ = '9';
+ } else if (*dataptr == '0') {
+ *bufptr++ = '0';
+ } else if (*dataptr == '\0') {
+ *bufptr++ = '\0';
+ break;
+ }
+ }
+ buf[len - 1] = '\0';
+
+ return 0;
+}
+
+static struct ast_custom_function keypadhash_function = {
+ .name = "KEYPADHASH",
+ .synopsis = "Hash the letters in the string into the equivalent keypad numbers.",
+ .syntax = "KEYPADHASH(<string>)",
+ .read = keypadhash,
+ .desc = "Example: ${KEYPADHASH(Les)} returns \"537\"\n",
+};
+
static char *tdesc = "String handling dialplan functions";
int unload_module(void)
@@ -363,6 +406,7 @@ int unload_module(void)
res |= ast_custom_function_unregister(&strftime_function);
res |= ast_custom_function_unregister(&strptime_function);
res |= ast_custom_function_unregister(&eval_function);
+ res |= ast_custom_function_unregister(&keypadhash_function);
return res;
}
@@ -379,6 +423,7 @@ int load_module(void)
res |= ast_custom_function_register(&strftime_function);
res |= ast_custom_function_register(&strptime_function);
res |= ast_custom_function_register(&eval_function);
+ res |= ast_custom_function_register(&keypadhash_function);
return res;
}