update app to use args parser

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10106 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin P. Fleming
2006-02-15 00:33:07 +00:00
parent 4662d58b01
commit 5845408aab

View File

@@ -2,6 +2,7 @@
* Asterisk -- An open source telephony toolkit. * Asterisk -- An open source telephony toolkit.
* *
* Copyright (c) 2003 Tilghman Lesher. All rights reserved. * Copyright (c) 2003 Tilghman Lesher. All rights reserved.
* Copyright (c) 2006 Digium, Inc.
* *
* Tilghman Lesher <app_sayunixtime__200309@the-tilghman.com> * Tilghman Lesher <app_sayunixtime__200309@the-tilghman.com>
* *
@@ -40,7 +41,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/pbx.h" #include "asterisk/pbx.h"
#include "asterisk/module.h" #include "asterisk/module.h"
#include "asterisk/say.h" #include "asterisk/say.h"
#include "asterisk/app.h"
static char *tdesc = "Say time"; static char *tdesc = "Say time";
@@ -72,34 +73,39 @@ LOCAL_USER_DECL;
static int sayunixtime_exec(struct ast_channel *chan, void *data) static int sayunixtime_exec(struct ast_channel *chan, void *data)
{ {
int res=0; AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(timeval);
AST_APP_ARG(timezone);
AST_APP_ARG(format);
);
char *parse;
int res = 0;
struct localuser *u; struct localuser *u;
char *s,*zone=NULL,*timec,*format;
time_t unixtime; time_t unixtime;
s = ast_strdupa(data); if (!data)
if (!s) return 0;
return data ? -1 : 0;
if (!(parse = ast_strdupa(data)))
return -1;
LOCAL_USER_ADD(u); LOCAL_USER_ADD(u);
format = "c"; /* default datetime */ args.format = "c"; /* default datetime */
timec = strsep(&s,"|"); AST_STANDARD_APP_ARGS(args, parse);
ast_get_time_t(timec, &unixtime, time(NULL));
if (s) { ast_get_time_t(args.timeval, &unixtime, time(NULL));
zone = strsep(&s,"|");
if (ast_strlen_zero(zone))
zone = NULL;
}
if (s) /* override format */
format = s;
if (chan->_state != AST_STATE_UP) if (chan->_state != AST_STATE_UP)
res = ast_answer(chan); res = ast_answer(chan);
if (!res) if (!res)
res = ast_say_date_with_format(chan, unixtime, AST_DIGIT_ANY, chan->language, format, zone); res = ast_say_date_with_format(chan, unixtime, AST_DIGIT_ANY,
chan->language, args.format, args.timezone);
LOCAL_USER_REMOVE(u); LOCAL_USER_REMOVE(u);
return res; return res;
} }