aboutsummaryrefslogtreecommitdiffstats
path: root/funcs/func_rand.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_rand.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_rand.c')
-rw-r--r--funcs/func_rand.c42
1 files changed, 18 insertions, 24 deletions
diff --git a/funcs/func_rand.c b/funcs/func_rand.c
index 34bccf573..6ec0f3c93 100644
--- a/funcs/func_rand.c
+++ b/funcs/func_rand.c
@@ -43,48 +43,42 @@ STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
-static char *acf_rand_exec(struct ast_channel *chan, char *cmd, char *data, char *buffer, size_t buflen)
+static int acf_rand_exec(struct ast_channel *chan, char *cmd,
+ char *parse, char *buffer, size_t buflen)
{
struct localuser *u;
int min_int, response_int, max_int;
- char *parse;
-
AST_DECLARE_APP_ARGS(args,
- AST_APP_ARG(min);
- AST_APP_ARG(max);
+ AST_APP_ARG(min);
+ AST_APP_ARG(max);
);
-
- if (!(parse = ast_strdupa(data))) {
- *buffer = '\0';
- return buffer;
- }
LOCAL_USER_ACF_ADD(u);
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.min) || sscanf(args.min, "%d", &min_int) != 1)
+ min_int = 0;
- if (ast_strlen_zero(args.max) || sscanf(args.max, "%d", &max_int) != 1) {
+ if (ast_strlen_zero(args.max) || sscanf(args.max, "%d", &max_int) != 1)
max_int = RAND_MAX;
- }
if (max_int < min_int) {
int tmp = max_int;
+
max_int = min_int;
min_int = tmp;
ast_log(LOG_DEBUG, "max<min\n");
}
response_int = min_int + (ast_random() % (max_int - min_int + 1));
- ast_log(LOG_DEBUG, "%d was the lucky number in range [%d,%d]\n", response_int, min_int, max_int);
+ ast_log(LOG_DEBUG, "%d was the lucky number in range [%d,%d]\n",
+ response_int, min_int, max_int);
snprintf(buffer, buflen, "%d", response_int);
LOCAL_USER_REMOVE(u);
- return buffer;
+
+ return 0;
}
static struct ast_custom_function acf_rand = {
@@ -92,10 +86,10 @@ static struct ast_custom_function acf_rand = {
.synopsis = "Choose a random number in a range",
.syntax = "RAND([min][,max])",
.desc =
-"Choose a random number between min and max. Min defaults to 0, if not\n"
-"specified, while max defaults to RAND_MAX (2147483647 on many systems).\n"
-" Example: Set(junky=${RAND(1,8)}); \n"
-" Sets junky to a random number between 1 and 8, inclusive.\n",
+ "Choose a random number between min and max. Min defaults to 0, if not\n"
+ "specified, while max defaults to RAND_MAX (2147483647 on many systems).\n"
+ " Example: Set(junky=${RAND(1,8)}); \n"
+ " Sets junky to a random number between 1 and 8, inclusive.\n",
.read = acf_rand_exec,
};
@@ -116,7 +110,7 @@ int load_module(void)
char *description(void)
{
- return tdesc;
+ return tdesc;
}
int usecount(void)
@@ -126,5 +120,5 @@ int usecount(void)
char *key()
{
- return ASTERISK_GPL_KEY;
+ return ASTERISK_GPL_KEY;
}