aboutsummaryrefslogtreecommitdiffstats
path: root/funcs/func_db.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-02-12 04:28:58 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-02-12 04:28:58 +0000
commit5d9ed5739aab2b302efc178d21e6c75672369db3 (patch)
tree5c4270c1ac3d265b96361d98722a75b947f2f8c6 /funcs/func_db.c
parent9f87dd693e9e74816b913a157fdcdefa3d7a2e56 (diff)
major dialplan functions update
deprecate LANGUAGE() and MUSICCLASS(), in favor of CHANNEL() git-svn-id: http://svn.digium.com/svn/asterisk/trunk@9674 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'funcs/func_db.c')
-rw-r--r--funcs/func_db.c114
1 files changed, 48 insertions, 66 deletions
diff --git a/funcs/func_db.c b/funcs/func_db.c
index efce117c8..a519fb0ff 100644
--- a/funcs/func_db.c
+++ b/funcs/func_db.c
@@ -1,7 +1,7 @@
/*
* Asterisk -- An open source telephony toolkit.
*
- * Copyright (C) 2005, Russell Bryant <russelb@clemson.edu>
+ * Copyright (C) 2005-2006, Russell Bryant <russelb@clemson.edu>
*
* func_db.c adapted from the old app_db.c, copyright by the following people
* Copyright (C) 2005, Mark Spencer <markster@digium.com>
@@ -43,80 +43,69 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/app.h"
#include "asterisk/astdb.h"
-static char *function_db_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
+static int function_db_read(struct ast_channel *chan, char *cmd,
+ char *parse, char *buf, size_t len)
{
- char *parse;
AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(family);
- AST_APP_ARG(key);
+ AST_APP_ARG(family);
+ AST_APP_ARG(key);
);
- if (ast_strlen_zero(data)) {
+ buf[0] = '\0';
+
+ if (ast_strlen_zero(parse)) {
ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)\n");
- buf[0] = '\0';
- return buf;
+ return -1;
}
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
- buf[0] = '\0';
- return buf;
- }
-
AST_NONSTANDARD_APP_ARGS(args, parse, '/');
-
+
if (args.argc < 2) {
ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)\n");
- buf[0] = '\0';
- return buf;
+ return -1;
}
- if (ast_db_get(args.family, args.key, buf, len-1)) {
- ast_log(LOG_DEBUG, "DB: %s/%s not found in database.\n", args.family, args.key);
+ if (ast_db_get(args.family, args.key, buf, len - 1)) {
+ ast_log(LOG_DEBUG, "DB: %s/%s not found in database.\n", args.family,
+ args.key);
} else
pbx_builtin_setvar_helper(chan, "DB_RESULT", buf);
-
- return buf;
+ return 0;
}
-static void function_db_write(struct ast_channel *chan, char *cmd, char *data, const char *value)
+static int function_db_write(struct ast_channel *chan, char *cmd, char *parse,
+ const char *value)
{
- char *parse;
AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(family);
- AST_APP_ARG(key);
+ AST_APP_ARG(family);
+ AST_APP_ARG(key);
);
- if (ast_strlen_zero(data)) {
+ if (ast_strlen_zero(parse)) {
ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=<value>\n");
- return;
- }
-
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
- return;
+ return -1;
}
AST_NONSTANDARD_APP_ARGS(args, parse, '/');
if (args.argc < 2) {
ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=value\n");
- return;
+ return -1;
}
- if (ast_db_put(args.family, args.key, (char*)value)) {
+ if (ast_db_put(args.family, args.key, (char *) value))
ast_log(LOG_WARNING, "DB: Error writing value to database.\n");
- }
+
+ return 0;
}
static struct ast_custom_function db_function = {
.name = "DB",
.synopsis = "Read or Write from/to the Asterisk database",
.syntax = "DB(<family>/<key>)",
- .desc = "This function will read or write a value from/to the Asterisk database.\n"
+ .desc =
+ "This function will read or write a value from/to the Asterisk database.\n"
"DB(...) will read a value from the database, while DB(...)=value\n"
"will write a value to the database. On a read, this function\n"
"returns the value from the datase, or NULL if it does not exist.\n"
@@ -126,50 +115,44 @@ static struct ast_custom_function db_function = {
.write = function_db_write,
};
-static char *function_db_exists(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
+static int function_db_exists(struct ast_channel *chan, char *cmd,
+ char *parse, char *buf, size_t len)
{
- char *parse;
AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(family);
- AST_APP_ARG(key);
+ AST_APP_ARG(family);
+ AST_APP_ARG(key);
);
- if (ast_strlen_zero(data)) {
+ buf[0] = '\0';
+
+ if (ast_strlen_zero(parse)) {
ast_log(LOG_WARNING, "DB_EXISTS requires an argument, DB(<family>/<key>)\n");
- buf[0] = '\0';
- return buf;
+ return -1;
}
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
- buf[0] = '\0';
- return buf;
- }
-
AST_NONSTANDARD_APP_ARGS(args, parse, '/');
-
+
if (args.argc < 2) {
ast_log(LOG_WARNING, "DB_EXISTS requires an argument, DB(<family>/<key>)\n");
- buf[0] = '\0';
- return buf;
+ return -1;
}
- if (ast_db_get(args.family, args.key, buf, len-1))
- ast_copy_string(buf, "0", len);
+ if (ast_db_get(args.family, args.key, buf, len - 1))
+ strcpy(buf, "0");
else {
pbx_builtin_setvar_helper(chan, "DB_RESULT", buf);
- ast_copy_string(buf, "1", len);
+ strcpy(buf, "1");
}
-
- return buf;
+
+ return 0;
}
static struct ast_custom_function db_exists_function = {
.name = "DB_EXISTS",
.synopsis = "Check to see if a key exists in the Asterisk database",
.syntax = "DB_EXISTS(<family>/<key>)",
- .desc = "This function will check to see if a key exists in the Asterisk\n"
+ .desc =
+ "This function will check to see if a key exists in the Asterisk\n"
"database. If it exists, the function will return \"1\". If not,\n"
"it will return \"0\". Checking for existence of a database key will\n"
"also set the variable DB_RESULT to the key's value if it exists.\n",
@@ -181,7 +164,7 @@ static char *tdesc = "Database (astdb) related dialplan functions";
int unload_module(void)
{
int res = 0;
-
+
res |= ast_custom_function_unregister(&db_function);
res |= ast_custom_function_unregister(&db_exists_function);
@@ -191,7 +174,7 @@ int unload_module(void)
int load_module(void)
{
int res = 0;
-
+
res |= ast_custom_function_register(&db_function);
res |= ast_custom_function_register(&db_exists_function);
@@ -200,7 +183,7 @@ int load_module(void)
char *description(void)
{
- return tdesc;
+ return tdesc;
}
int usecount(void)
@@ -210,6 +193,5 @@ int usecount(void)
char *key()
{
- return ASTERISK_GPL_KEY;
+ return ASTERISK_GPL_KEY;
}
-