|
|
|
@ -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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|