Fix build of new IVR stuff for GCC 2.96 and later gcc's too (bug #3639)
authorMark Spencer <markster@digium.com>
Sat, 26 Feb 2005 19:06:09 +0000 (19:06 +0000)
committerMark Spencer <markster@digium.com>
Sat, 26 Feb 2005 19:06:09 +0000 (19:06 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5091 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_ivrdemo.c
include/asterisk/app.h

index d7b7522..4dc64f3 100755 (executable)
@@ -34,20 +34,20 @@ static int ivr_demo_func(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static struct ast_ivr_menu ivr_submenu = {
-       "IVR Demo Sub Menu", 0, {
-       { "s", AST_ACTION_BACKGROUND, "demo-abouttotry" },
-       { "1", AST_ACTION_PLAYBACK, "digits/1" },
-       { "1", AST_ACTION_PLAYBACK, "digits/1" },
-       { "1", AST_ACTION_RESTART },
-       { "2", AST_ACTION_PLAYLIST, "digits/2;digits/3" },
-       { "*", AST_ACTION_REPEAT },
-       { "#", AST_ACTION_UPONE  },
-       { NULL },
-}};
+AST_IVR_DECLARE_MENU(ivr_submenu, "IVR Demo Sub Menu", 0, 
+{
+               { "s", AST_ACTION_BACKGROUND, "demo-abouttotry" },
+               { "1", AST_ACTION_PLAYBACK, "digits/1" },
+               { "1", AST_ACTION_PLAYBACK, "digits/1" },
+               { "1", AST_ACTION_RESTART },
+               { "2", AST_ACTION_PLAYLIST, "digits/2;digits/3" },
+               { "*", AST_ACTION_REPEAT },
+               { "#", AST_ACTION_UPONE  },
+               { NULL }
+});
 
-static struct ast_ivr_menu ivr_demo = {
-       "IVR Demo Main Menu", 0, {
+AST_IVR_DECLARE_MENU(ivr_demo, "IVR Demo Main Menu", 0, 
+{
        { "s", AST_ACTION_BACKGROUND, "demo-congrats" },
        { "g", AST_ACTION_BACKGROUND, "demo-instruct" },
        { "g", AST_ACTION_WAITOPTION },
@@ -59,7 +59,7 @@ static struct ast_ivr_menu ivr_demo = {
        { "i", AST_ACTION_REPEAT, (void *)2 },
        { "#", AST_ACTION_EXIT },
        { NULL },
-}};
+});
 
 STANDARD_LOCAL_USER;
 
index 3eb87c3..222dbae 100755 (executable)
@@ -59,9 +59,14 @@ struct ast_ivr_option {
 struct ast_ivr_menu {
        char *title;            /* Title of menu */
        unsigned int flags;     /* Flags */
-       struct ast_ivr_option options[];        /* All options */
+       struct ast_ivr_option *options; /* All options */
 };
 
+#define AST_IVR_DECLARE_MENU(holder,title,flags,foo...) \
+       static struct ast_ivr_option __options_##holder[] = foo;\
+       static struct ast_ivr_menu holder = { title, flags, __options_##holder }
+       
+
 /*! Runs an IVR menu, returns 0 on successful completion, -1 on hangup, or -2 on user error in menu */
 extern int ast_ivr_menu_run(struct ast_channel *c, struct ast_ivr_menu *menu, void *cbdata);