From 5d9ed5739aab2b302efc178d21e6c75672369db3 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Sun, 12 Feb 2006 04:28:58 +0000 Subject: 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 --- funcs/func_db.c | 114 ++++++++++++++++++++++++-------------------------------- 1 file changed, 48 insertions(+), 66 deletions(-) (limited to 'funcs/func_db.c') 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 + * Copyright (C) 2005-2006, Russell Bryant * * func_db.c adapted from the old app_db.c, copyright by the following people * Copyright (C) 2005, Mark Spencer @@ -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(/)\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(/)\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(/)=\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(/)=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(/)", - .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(/)\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(/)\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(/)", - .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; } - -- cgit v1.2.3