update app to use args parser
authorKevin P. Fleming <kpfleming@digium.com>
Wed, 15 Feb 2006 00:33:07 +0000 (00:33 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Wed, 15 Feb 2006 00:33:07 +0000 (00:33 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10106 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_sayunixtime.c

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