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/func_rand.c | |
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/func_rand.c')
-rw-r--r-- | funcs/func_rand.c | 23 |
1 files changed, 14 insertions, 9 deletions
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; } |