diff options
author | mogorman <mogorman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-01-23 18:07:12 +0000 |
---|---|---|
committer | mogorman <mogorman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-01-23 18:07:12 +0000 |
commit | 4df94f37691d77b54f621299fd72b0720a86dabf (patch) | |
tree | d809b89ec52a6359275cbeda8a93a641590cd127 /funcs | |
parent | 4b72b51da16dfdc720942ffcf8942159607e3a7e (diff) |
code clean up and macro implementation from
bug 6247
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@8505 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'funcs')
-rw-r--r-- | funcs/func_db.c | 88 | ||||
-rw-r--r-- | funcs/func_rand.c | 23 |
2 files changed, 64 insertions, 47 deletions
diff --git a/funcs/func_db.c b/funcs/func_db.c index 1837c8be7..3125d8eca 100644 --- a/funcs/func_db.c +++ b/funcs/func_db.c @@ -44,30 +44,35 @@ static char *function_db_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { - int argc; - char *args; - char *argv[2]; - char *family; - char *key; + char *parse; + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(family); + AST_APP_ARG(key); + ); if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)\n"); + buf[0] = '\0'; return buf; } - args = ast_strdupa(data); - argc = ast_app_separate_args(args, '/', argv, sizeof(argv) / sizeof(argv[0])); + 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 (argc > 1) { - family = argv[0]; - key = argv[1]; - } else { + if (args.argc < 2) { ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)\n"); + buf[0] = '\0'; return buf; } - if (ast_db_get(family, key, buf, len-1)) { - ast_log(LOG_DEBUG, "DB: %s/%s not found in database.\n", family, 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); @@ -77,29 +82,31 @@ static char *function_db_read(struct ast_channel *chan, char *cmd, char *data, c static void function_db_write(struct ast_channel *chan, char *cmd, char *data, const char *value) { - int argc; - char *args; - char *argv[2]; - char *family; - char *key; + char *parse; + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(family); + AST_APP_ARG(key); + ); if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=<value>\n"); return; } - args = ast_strdupa(data); - argc = ast_app_separate_args(args, '/', argv, sizeof(argv) / sizeof(argv[0])); - - if (argc > 1) { - family = argv[0]; - key = argv[1]; - } else { + parse = ast_strdupa(data); + if (!parse) { + ast_log(LOG_ERROR, "Out of memory!\n"); + return; + } + + AST_NONSTANDARD_APP_ARGS(args, parse, '/'); + + if (args.argc < 2) { ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=value\n"); return; } - if (ast_db_put(family, key, (char*)value)) { + if (ast_db_put(args.family, args.key, (char*)value)) { ast_log(LOG_WARNING, "DB: Error writing value to database.\n"); } } @@ -123,29 +130,34 @@ struct ast_custom_function db_function = { static char *function_db_exists(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { - int argc; - char *args; - char *argv[2]; - char *family; - char *key; + char *parse; + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(family); + AST_APP_ARG(key); + ); if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "DB_EXISTS requires an argument, DB(<family>/<key>)\n"); + buf[0] = '\0'; return buf; } - args = ast_strdupa(data); - argc = ast_app_separate_args(args, '/', argv, sizeof(argv) / sizeof(argv[0])); + 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 (argc > 1) { - family = argv[0]; - key = argv[1]; - } else { + if (args.argc < 2) { ast_log(LOG_WARNING, "DB_EXISTS requires an argument, DB(<family>/<key>)\n"); + buf[0] = '\0'; return buf; } - if (ast_db_get(family, key, buf, len-1)) + if (ast_db_get(args.family, args.key, buf, len-1)) ast_copy_string(buf, "0", len); else { pbx_builtin_setvar_helper(chan, "DB_RESULT", buf); diff --git a/funcs/func_rand.c b/funcs/func_rand.c index 0f1bd0068..4b7f7b6d4 100644 --- a/funcs/func_rand.c +++ b/funcs/func_rand.c @@ -50,24 +50,29 @@ LOCAL_USER_DECL; static char *acf_rand_exec(struct ast_channel *chan, char *cmd, char *data, char *buffer, size_t buflen) { struct localuser *u; - char *args[2] = { "", "" }, *s; int min_int, response_int, max_int; - - LOCAL_USER_ACF_ADD(u); - - if (!(s = ast_strdupa(data))) { + char *parse; + + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(min); + AST_APP_ARG(max); + ); + + if (!(parse = ast_strdupa(data))) { *buffer = '\0'; - LOCAL_USER_REMOVE(u); return buffer; } - ast_app_separate_args(s, '|', args, sizeof(args) / sizeof(args[0])); + LOCAL_USER_ACF_ADD(u); - if (ast_strlen_zero(args[0]) || sscanf(args[0], "%d", &min_int) != 1) { + AST_STANDARD_APP_ARGS(args, parse); + + if (ast_strlen_zero(args.min) || sscanf(args.min, "%d", &min_int) != 1) { min_int = 0; } - if (ast_strlen_zero(args[1]) || sscanf(args[1], "%d", &max_int) != 1) { + + if (ast_strlen_zero(args.max) || sscanf(args.max, "%d", &max_int) != 1) { max_int = RAND_MAX; } |