From 6a79d3a18f2474e0a6905db060e23016979269c4 Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Sat, 26 Feb 2005 19:06:09 +0000 Subject: [PATCH] Fix build of new IVR stuff for GCC 2.96 and later gcc's too (bug #3639) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5091 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_ivrdemo.c | 28 ++++++++++++++-------------- include/asterisk/app.h | 7 ++++++- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/apps/app_ivrdemo.c b/apps/app_ivrdemo.c index d7b75220a5..4dc64f38f2 100755 --- a/apps/app_ivrdemo.c +++ b/apps/app_ivrdemo.c @@ -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; diff --git a/include/asterisk/app.h b/include/asterisk/app.h index 3eb87c399f..222dbaeb4b 100755 --- a/include/asterisk/app.h +++ b/include/asterisk/app.h @@ -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);