Const-ify the world (or at least a good part of it)
authorKevin P. Fleming <kpfleming@digium.com>
Thu, 21 May 2009 21:13:09 +0000 (21:13 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Thu, 21 May 2009 21:13:09 +0000 (21:13 +0000)
This patch adds 'const' tags to a number of Asterisk APIs where they are appropriate (where the API already demanded that the function argument not be modified, but the compiler was not informed of that fact). The list includes:

- CLI command handlers
- CLI command handler arguments
- AGI command handlers
- AGI command handler arguments
- Dialplan application handler arguments
- Speech engine API function arguments

In addition, various file-scope and function-scope constant arrays got 'const' and/or 'static' qualifiers where they were missing.

Review: https://reviewboard.asterisk.org/r/251/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@196072 65c4cc65-6c06-0410-ace0-fbb531ad65f3

145 files changed:
apps/app_adsiprog.c
apps/app_alarmreceiver.c
apps/app_amd.c
apps/app_authenticate.c
apps/app_cdr.c
apps/app_chanisavail.c
apps/app_channelredirect.c
apps/app_chanspy.c
apps/app_confbridge.c
apps/app_controlplayback.c
apps/app_dahdibarge.c
apps/app_dahdiras.c
apps/app_db.c
apps/app_dial.c
apps/app_dictate.c
apps/app_directed_pickup.c
apps/app_directory.c
apps/app_disa.c
apps/app_dumpchan.c
apps/app_echo.c
apps/app_exec.c
apps/app_externalivr.c
apps/app_fax.c
apps/app_festival.c
apps/app_flash.c
apps/app_followme.c
apps/app_forkcdr.c
apps/app_getcpeid.c
apps/app_ices.c
apps/app_image.c
apps/app_ivrdemo.c
apps/app_jack.c
apps/app_macro.c
apps/app_meetme.c
apps/app_milliwatt.c
apps/app_minivm.c
apps/app_mixmonitor.c
apps/app_morsecode.c
apps/app_mp3.c
apps/app_nbscat.c
apps/app_originate.c
apps/app_osplookup.c
apps/app_page.c
apps/app_parkandannounce.c
apps/app_playback.c
apps/app_playtones.c
apps/app_privacy.c
apps/app_queue.c
apps/app_read.c
apps/app_readexten.c
apps/app_readfile.c
apps/app_record.c
apps/app_rpt.c
apps/app_sayunixtime.c
apps/app_senddtmf.c
apps/app_sendtext.c
apps/app_setcallerid.c
apps/app_skel.c
apps/app_sms.c
apps/app_softhangup.c
apps/app_speech_utils.c
apps/app_stack.c
apps/app_system.c
apps/app_talkdetect.c
apps/app_test.c
apps/app_transfer.c
apps/app_url.c
apps/app_userevent.c
apps/app_verbose.c
apps/app_voicemail.c
apps/app_waitforring.c
apps/app_waitforsilence.c
apps/app_waituntil.c
apps/app_while.c
apps/app_zapateller.c
cdr/cdr_adaptive_odbc.c
cdr/cdr_sqlite.c
cdr/cdr_sqlite3_custom.c
channels/chan_agent.c
channels/chan_alsa.c
channels/chan_console.c
channels/chan_dahdi.c
channels/chan_iax2.c
channels/chan_mgcp.c
channels/chan_misdn.c
channels/chan_nbs.c
channels/chan_oss.c
channels/chan_sip.c
channels/chan_skinny.c
channels/chan_unistim.c
channels/console_gui.c
channels/iax2-parser.c
channels/misdn/chan_misdn_config.h
channels/misdn_config.c
channels/vcodecs.c
formats/format_gsm.c
funcs/func_devstate.c
funcs/func_odbc.c
funcs/func_strings.c
include/asterisk/abstract_jb.h
include/asterisk/agi.h
include/asterisk/app.h
include/asterisk/cli.h
include/asterisk/extconf.h
include/asterisk/features.h
include/asterisk/image.h
include/asterisk/module.h
include/asterisk/pbx.h
include/asterisk/speech.h
include/asterisk/strings.h
include/asterisk/taskprocessor.h
include/asterisk/utils.h
main/abstract_jb.c
main/app.c
main/ast_expr2.fl
main/asterisk.c
main/astobj2.c
main/cdr.c
main/channel.c
main/cli.c
main/dsp.c
main/features.c
main/frame.c
main/image.c
main/loader.c
main/manager.c
main/pbx.c
main/taskprocessor.c
main/udptl.c
main/ulaw.c
main/utils.c
pbx/dundi-parser.c
pbx/pbx_ael.c
pbx/pbx_config.c
res/res_agi.c
res/res_clioriginate.c
res/res_jabber.c
res/res_limit.c
res/res_monitor.c
res/res_musiconhold.c
res/res_odbc.c
res/res_rtp_asterisk.c
res/res_speech.c
utils/conf2ael.c
utils/extconf.c

index 8f789c6..b889f96 100644 (file)
@@ -74,7 +74,7 @@ struct adsi_event {
        char *name;
 };
 
-static struct adsi_event events[] = {
+static const struct adsi_event events[] = {
        { 1, "CALLERID" },
        { 2, "VMWI" },
        { 3, "NEARANSWER" },
@@ -101,7 +101,7 @@ static struct adsi_event events[] = {
        { 24, "CPEID" },
 };
 
-static struct adsi_event justify[] = {
+static const struct adsi_event justify[] = {
        { 0, "CENTER" },
        { 1, "RIGHT" },
        { 2, "LEFT" },
@@ -232,7 +232,7 @@ static int process_token(void *out, char *src, int maxlen, int argtype)
        return 0;
 }
 
-static char *get_token(char **buf, char *script, int lineno)
+static char *get_token(char **buf, const char *script, int lineno)
 {
        char *tmp = *buf, *keyword;
        int quoted = 0;
@@ -264,7 +264,7 @@ static char *get_token(char **buf, char *script, int lineno)
 
 static char *validdtmf = "123456789*0#ABCD";
 
-static int send_dtmf(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int send_dtmf(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char dtmfstr[80], *a;
        int bytes = 0;
@@ -294,7 +294,7 @@ static int send_dtmf(char *buf, char *name, int id, char *args, struct adsi_scri
        return bytes;
 }
 
-static int goto_line(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int goto_line(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *page = get_token(&args, script, lineno);
        char *gline = get_token(&args, script, lineno);
@@ -327,7 +327,7 @@ static int goto_line(char *buf, char *name, int id, char *args, struct adsi_scri
        return 2;
 }
 
-static int goto_line_rel(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int goto_line_rel(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *dir = get_token(&args, script, lineno);
        char *gline = get_token(&args, script, lineno);
@@ -360,7 +360,7 @@ static int goto_line_rel(char *buf, char *name, int id, char *args, struct adsi_
        return 2;
 }
 
-static int send_delay(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int send_delay(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *gtime = get_token(&args, script, lineno);
        int ms;
@@ -385,7 +385,7 @@ static int send_delay(char *buf, char *name, int id, char *args, struct adsi_scr
        return 2;
 }
 
-static int set_state(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int set_state(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *gstate = get_token(&args, script, lineno);
        int state;
@@ -406,7 +406,7 @@ static int set_state(char *buf, char *name, int id, char *args, struct adsi_scri
        return 2;
 }
 
-static int cleartimer(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int cleartimer(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
 
@@ -424,7 +424,7 @@ static int cleartimer(char *buf, char *name, int id, char *args, struct adsi_scr
        return 2;
 }
 
-static struct adsi_flag *getflagbyname(struct adsi_script *state, char *name, char *script, int lineno, int create)
+static struct adsi_flag *getflagbyname(struct adsi_script *state, char *name, const char *script, int lineno, int create)
 {
        int x;
 
@@ -449,7 +449,7 @@ static struct adsi_flag *getflagbyname(struct adsi_script *state, char *name, ch
        return &state->flags[state->numflags-1];
 }
 
-static int setflag(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int setflag(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
        char sname[80];
@@ -476,7 +476,7 @@ static int setflag(char *buf, char *name, int id, char *args, struct adsi_script
        return 2;
 }
 
-static int clearflag(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int clearflag(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
        struct adsi_flag *flag;
@@ -503,7 +503,7 @@ static int clearflag(char *buf, char *name, int id, char *args, struct adsi_scri
        return 2;
 }
 
-static int starttimer(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int starttimer(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
        int secs;
@@ -549,7 +549,7 @@ static int getjustifybyname(char *name)
        return -1;
 }
 
-static struct adsi_soft_key *getkeybyname(struct adsi_script *state, char *name, char *script, int lineno)
+static struct adsi_soft_key *getkeybyname(struct adsi_script *state, char *name, const char *script, int lineno)
 {
        int x;
 
@@ -570,7 +570,7 @@ static struct adsi_soft_key *getkeybyname(struct adsi_script *state, char *name,
        return &state->keys[state->numkeys-1];
 }
 
-static struct adsi_subscript *getsubbyname(struct adsi_script *state, char *name, char *script, int lineno)
+static struct adsi_subscript *getsubbyname(struct adsi_script *state, char *name, const char *script, int lineno)
 {
        int x;
 
@@ -591,7 +591,7 @@ static struct adsi_subscript *getsubbyname(struct adsi_script *state, char *name
        return &state->subs[state->numsubs-1];
 }
 
-static struct adsi_state *getstatebyname(struct adsi_script *state, char *name, char *script, int lineno, int create)
+static struct adsi_state *getstatebyname(struct adsi_script *state, char *name, const char *script, int lineno, int create)
 {
        int x;
 
@@ -616,7 +616,7 @@ static struct adsi_state *getstatebyname(struct adsi_script *state, char *name,
        return &state->states[state->numstates-1];
 }
 
-static struct adsi_display *getdisplaybyname(struct adsi_script *state, char *name, char *script, int lineno, int create)
+static struct adsi_display *getdisplaybyname(struct adsi_script *state, char *name, const char *script, int lineno, int create)
 {
        int x;
 
@@ -641,7 +641,7 @@ static struct adsi_display *getdisplaybyname(struct adsi_script *state, char *na
        return &state->displays[state->numdisplays-1];
 }
 
-static int showkeys(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int showkeys(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *tok, newkey[80];
        int bytes, x, flagid = 0;
@@ -688,7 +688,7 @@ static int showkeys(char *buf, char *name, int id, char *args, struct adsi_scrip
        return 2 + x;
 }
 
-static int showdisplay(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int showdisplay(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *tok, dispname[80];
        int line = 0, flag = 0, cmd = 3;
@@ -739,7 +739,7 @@ static int showdisplay(char *buf, char *name, int id, char *args, struct adsi_sc
        return 3;
 }
 
-static int cleardisplay(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int cleardisplay(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
 
@@ -751,7 +751,7 @@ static int cleardisplay(char *buf, char *name, int id, char *args, struct adsi_s
        return 2;
 }
 
-static int digitdirect(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int digitdirect(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
 
@@ -763,7 +763,7 @@ static int digitdirect(char *buf, char *name, int id, char *args, struct adsi_sc
        return 2;
 }
 
-static int clearcbone(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int clearcbone(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
 
@@ -775,7 +775,7 @@ static int clearcbone(char *buf, char *name, int id, char *args, struct adsi_scr
        return 2;
 }
 
-static int digitcollect(char *buf, char *name, int id, char *args, struct adsi_script *istate, char *script, int lineno)
+static int digitcollect(char *buf, char *name, int id, char *args, struct adsi_script *istate, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
 
@@ -787,7 +787,7 @@ static int digitcollect(char *buf, char *name, int id, char *args, struct adsi_s
        return 2;
 }
 
-static int subscript(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int subscript(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
        char subscr[80];
@@ -812,7 +812,7 @@ static int subscript(char *buf, char *name, int id, char *args, struct adsi_scri
        return 2;
 }
 
-static int onevent(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno)
+static int onevent(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        char *tok = get_token(&args, script, lineno);
        char subscr[80], sname[80];
@@ -879,10 +879,10 @@ static int onevent(char *buf, char *name, int id, char *args, struct adsi_script
 struct adsi_key_cmd {
        char *name;
        int id;
-       int (*add_args)(char *buf, char *name, int id, char *args, struct adsi_script *state, char *script, int lineno);
+       int (*add_args)(char *buf, char *name, int id, char *args, struct adsi_script *state, const char *script, int lineno);
 };
 
-static struct adsi_key_cmd kcmds[] = {
+static const struct adsi_key_cmd kcmds[] = {
        { "SENDDTMF", 0, send_dtmf },
        /* Encoded DTMF would go here */
        { "ONHOOK", 0x81 },
@@ -924,7 +924,7 @@ static struct adsi_key_cmd kcmds[] = {
        { "EXIT", 0xa0 },
 };
 
-static struct adsi_key_cmd opcmds[] = {
+static const struct adsi_key_cmd opcmds[] = {
        
        /* 1 - Branch on event -- handled specially */
        { "SHOWKEYS", 2, showkeys },
@@ -944,7 +944,7 @@ static struct adsi_key_cmd opcmds[] = {
 };
 
 
-static int process_returncode(struct adsi_soft_key *key, char *code, char *args, struct adsi_script *state, char *script, int lineno)
+static int process_returncode(struct adsi_soft_key *key, char *code, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        int x, res;
        char *unused;
@@ -973,7 +973,7 @@ static int process_returncode(struct adsi_soft_key *key, char *code, char *args,
        return -1;
 }
 
-static int process_opcode(struct adsi_subscript *sub, char *code, char *args, struct adsi_script *state, char *script, int lineno)
+static int process_opcode(struct adsi_subscript *sub, char *code, char *args, struct adsi_script *state, const char *script, int lineno)
 {
        int x, res, max = sub->id ? MAX_SUB_LEN : MAX_MAIN_LEN;
        char *unused;
@@ -1010,7 +1010,7 @@ static int process_opcode(struct adsi_subscript *sub, char *code, char *args, st
        return -1;
 }
 
-static int adsi_process(struct adsi_script *state, char *buf, char *script, int lineno)
+static int adsi_process(struct adsi_script *state, char *buf, const char *script, int lineno)
 {
        char *keyword = get_token(&buf, script, lineno);
        char *args, vname[256], tmp[80], tmp2[80];
@@ -1358,7 +1358,7 @@ static int adsi_process(struct adsi_script *state, char *buf, char *script, int
        return 0;
 }
 
-static struct adsi_script *compile_script(char *script)
+static struct adsi_script *compile_script(const char *script)
 {
        FILE *f;
        char fn[256], buf[256], *c;
@@ -1451,7 +1451,7 @@ static void dump_message(char *type, char *vname, unsigned char *buf, int buflen
 }
 #endif
 
-static int adsi_prog(struct ast_channel *chan, char *script)
+static int adsi_prog(struct ast_channel *chan, const char *script)
 {
        struct adsi_script *scr;
        int x, bytes;
@@ -1562,7 +1562,7 @@ static int adsi_prog(struct ast_channel *chan, char *script)
        return 0;
 }
 
-static int adsi_exec(struct ast_channel *chan, void *data)
+static int adsi_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        
index 6b34dfb..c6fa898 100644 (file)
@@ -416,7 +416,7 @@ static int log_events(struct ast_channel *chan,  char *signalling_type, event_no
 *
 * The function will return 0 when the caller hangs up, else a -1 if there was a problem.
 */
-static int receive_ademco_contact_id( struct ast_channel *chan, void *data, int fdto, int sdto, int tldn, event_node_t **ehead)
+static int receive_ademco_contact_id(struct ast_channel *chan, const void *data, int fdto, int sdto, int tldn, event_node_t **ehead)
 {
        int i, j;
        int res = 0;
@@ -564,7 +564,7 @@ static int receive_ademco_contact_id( struct ast_channel *chan, void *data, int
 * This is the main function called by Asterisk Core whenever the App is invoked in the extension logic.
 * This function will always return 0.
 */
-static int alarmreceiver_exec(struct ast_channel *chan, void *data)
+static int alarmreceiver_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        event_node_t *elp, *efree;
index 56fa10f..cedd3b6 100644 (file)
@@ -143,7 +143,7 @@ static int dfltMaximumWordLength    = 5000; /* Setting this to a large default s
 /* Set to the lowest ms value provided in amd.conf or application parameters */
 static int dfltMaxWaitTimeForFrame  = 50;
 
-static void isAnsweringMachine(struct ast_channel *chan, void *data)
+static void isAnsweringMachine(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_frame *f = NULL;
@@ -404,7 +404,7 @@ static void isAnsweringMachine(struct ast_channel *chan, void *data)
 }
 
 
-static int amd_exec(struct ast_channel *chan, void *data)
+static int amd_exec(struct ast_channel *chan, const char *data)
 {
        isAnsweringMachine(chan, data);
 
index 88b2018..1957025 100644 (file)
@@ -105,7 +105,7 @@ static char *app = "Authenticate";
        </application>
  ***/
 
-static int auth_exec(struct ast_channel *chan, void *data)
+static int auth_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0, retries, maxdigits;
        char passwd[256], *prompt = "agent-pass", *argcopy = NULL;
index ca228da..70036ad 100644 (file)
@@ -44,9 +44,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
        </application>
  ***/
 
-static char *nocdr_app = "NoCDR";
+static const char nocdr_app[] = "NoCDR";
 
-static int nocdr_exec(struct ast_channel *chan, void *data)
+static int nocdr_exec(struct ast_channel *chan, const char *data)
 {
        if (chan->cdr)
                ast_set_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED);
index 556bafd..c7af4af 100644 (file)
@@ -92,7 +92,7 @@ static char *app = "ChanIsAvail";
        </application>
  ***/
 
-static int chanavail_exec(struct ast_channel *chan, void *data)
+static int chanavail_exec(struct ast_channel *chan, const char *data)
 {
        int inuse=-1, option_state=0, string_compare=0, option_all_avail=0;
        int status;
index f604151..7271621 100644 (file)
@@ -62,7 +62,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
  ***/
 static char *app = "ChannelRedirect";
 
-static int asyncgoto_exec(struct ast_channel *chan, void *data)
+static int asyncgoto_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        char *info;
index 76d8230..5800383 100644 (file)
@@ -963,7 +963,7 @@ exit:
        return res;
 }
 
-static int chanspy_exec(struct ast_channel *chan, void *data)
+static int chanspy_exec(struct ast_channel *chan, const char *data)
 {
        char *myenforced = NULL;
        char *mygroup = NULL;
@@ -985,9 +985,9 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
                AST_APP_ARG(options);
        );
        char *opts[OPT_ARG_ARRAY_SIZE];
+       char *parse = ast_strdupa(data);
 
-       data = ast_strdupa(data);
-       AST_STANDARD_APP_ARGS(args, data);
+       AST_STANDARD_APP_ARGS(args, parse);
 
        if (args.spec && !strcmp(args.spec, "all"))
                args.spec = NULL;
@@ -1078,7 +1078,7 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int extenspy_exec(struct ast_channel *chan, void *data)
+static int extenspy_exec(struct ast_channel *chan, const char *data)
 {
        char *ptr, *exten = NULL;
        char *mygroup = NULL;
@@ -1099,10 +1099,9 @@ static int extenspy_exec(struct ast_channel *chan, void *data)
                AST_APP_ARG(context);
                AST_APP_ARG(options);
        );
+       char *parse = ast_strdupa(data);
 
-       data = ast_strdupa(data);
-
-       AST_STANDARD_APP_ARGS(args, data);
+       AST_STANDARD_APP_ARGS(args, parse);
        if (!ast_strlen_zero(args.context) && (ptr = strchr(args.context, '@'))) {
                exten = args.context;
                *ptr++ = '\0';
@@ -1199,7 +1198,7 @@ static int extenspy_exec(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int dahdiscan_exec(struct ast_channel *chan, void *data)
+static int dahdiscan_exec(struct ast_channel *chan, const char *data)
 {
        const char *spec = "DAHDI";
        struct ast_flags flags;
index 41edb2b..d7a0bad 100644 (file)
@@ -683,7 +683,7 @@ static int menu_callback(struct ast_bridge *bridge, struct ast_bridge_channel *b
 }
 
 /*! \brief The ConfBridge application */
-static int confbridge_exec(struct ast_channel *chan, void *data)
+static int confbridge_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0, volume_adjustments[2];
        char *parse;
index fbcf691..11a162d 100644 (file)
@@ -125,7 +125,7 @@ static int is_argument(const char *haystack, int needle)
        return 0;
 }
 
-static int controlplayback_exec(struct ast_channel *chan, void *data)
+static int controlplayback_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        int skipms = 0;
index cfa445a..1243181 100644 (file)
@@ -258,7 +258,7 @@ outrun:
        return ret;
 }
 
-static int conf_exec(struct ast_channel *chan, void *data)
+static int conf_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        int retrycnt = 0;
index a69d092..67f434e 100644 (file)
@@ -187,7 +187,7 @@ static void run_ras(struct ast_channel *chan, char *args)
        ast_safe_fork_cleanup();
 }
 
-static int dahdiras_exec(struct ast_channel *chan, void *data)
+static int dahdiras_exec(struct ast_channel *chan, const char *data)
 {
        int res=-1;
        char *args;
index 3a89b86..8171ed2 100644 (file)
@@ -83,7 +83,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 static char *d_app = "DBdel";
 static char *dt_app = "DBdeltree";
 
-static int deltree_exec(struct ast_channel *chan, void *data)
+static int deltree_exec(struct ast_channel *chan, const char *data)
 {
        char *argv, *family, *keytree;
 
@@ -114,7 +114,7 @@ static int deltree_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int del_exec(struct ast_channel *chan, void *data)
+static int del_exec(struct ast_channel *chan, const char *data)
 {
        char *argv, *family, *key;
        static int deprecation_warning = 0;
index 790e49f..2548e8e 100644 (file)
@@ -1634,7 +1634,7 @@ static void end_bridge_callback_data_fixup(struct ast_bridge_config *bconfig, st
        bconfig->end_bridge_callback_data = originator;
 }
 
-static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags64 *peerflags, int *continue_exec)
+static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast_flags64 *peerflags, int *continue_exec)
 {
        int res = -1; /* default: error */
        char *rest, *cur; /* scan the list of destinations */
@@ -2423,7 +2423,7 @@ done:
        return res;
 }
 
-static int dial_exec(struct ast_channel *chan, void *data)
+static int dial_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_flags64 peerflags;
 
@@ -2432,7 +2432,7 @@ static int dial_exec(struct ast_channel *chan, void *data)
        return dial_exec_full(chan, data, &peerflags, NULL);
 }
 
-static int retrydial_exec(struct ast_channel *chan, void *data)
+static int retrydial_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
        const char *context = NULL;
index b187998..d940b67 100644 (file)
@@ -81,7 +81,7 @@ static int play_and_wait(struct ast_channel *chan, char *file, char *digits)
        return res;
 }
 
-static int dictate_exec(struct ast_channel *chan, void *data)
+static int dictate_exec(struct ast_channel *chan, const char *data)
 {
        char *path = NULL, filein[256], *filename = "";
        char *parse;
index 2f4c182..f0f74f1 100644 (file)
@@ -262,7 +262,7 @@ static int pickup_by_mark(struct ast_channel *chan, const char *mark)
 }
 
 /* application entry point for Pickup() */
-static int pickup_exec(struct ast_channel *chan, void *data)
+static int pickup_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *tmp = ast_strdupa(data);
@@ -291,7 +291,7 @@ static int pickup_exec(struct ast_channel *chan, void *data)
 }
 
 /* application entry point for PickupChan() */
-static int pickupchan_exec(struct ast_channel *chan, void *data)
+static int pickupchan_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *tmp = ast_strdupa(data);
index fe8139d..d0172e7 100644 (file)
@@ -714,7 +714,7 @@ exit:
        return res;
 }
 
-static int directory_exec(struct ast_channel *chan, void *data)
+static int directory_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0, digit = 3;
        struct ast_config *cfg, *ucfg;
index 691fa94..b7ca23c 100644 (file)
@@ -140,7 +140,7 @@ static void play_dialtone(struct ast_channel *chan, char *mailbox)
        }
 }
 
-static int disa_exec(struct ast_channel *chan, void *data)
+static int disa_exec(struct ast_channel *chan, const char *data)
 {
        int i = 0, j, k = 0, did_ignore = 0, special_noanswer = 0;
        int firstdigittimeout = (chan->pbx ? chan->pbx->rtimeoutms : 20000);
index 739fe24..476f2f1 100644 (file)
@@ -147,7 +147,7 @@ static int serialize_showchan(struct ast_channel *c, char *buf, size_t size)
        return 0;
 }
 
-static int dumpchan_exec(struct ast_channel *chan, void *data)
+static int dumpchan_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_str *vars = ast_str_thread_get(&ast_str_thread_global_buf, 16);
        char info[1024];
index 8b0d21f..dcdebed 100644 (file)
@@ -48,7 +48,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "Echo";
 
-static int echo_exec(struct ast_channel *chan, void *data)
+static int echo_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        int format;
index 3c5be33..b840e24 100644 (file)
@@ -129,7 +129,7 @@ static char *app_exec = "Exec";
 static char *app_tryexec = "TryExec";
 static char *app_execif = "ExecIf";
 
-static int exec_exec(struct ast_channel *chan, void *data)
+static int exec_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *s, *appname, *endargs;
@@ -163,7 +163,7 @@ static int exec_exec(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int tryexec_exec(struct ast_channel *chan, void *data)
+static int tryexec_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *s, *appname, *endargs;
@@ -198,7 +198,7 @@ static int tryexec_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int execif_exec(struct ast_channel *chan, void *data)
+static int execif_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *truedata = NULL, *falsedata = NULL, *end, *firstcomma, *firstquestion;
index 5c6cc0a..db3db3d 100644 (file)
@@ -311,7 +311,7 @@ static struct playlist_entry *make_entry(const char *filename)
        return entry;
 }
 
-static int app_exec(struct ast_channel *chan, void *data)
+static int app_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_flags flags = { 0, };
        char *opts[0];
index ed7fe16..6cb1884 100644 (file)
@@ -705,7 +705,7 @@ static int transmit(fax_session *s)
 
 /* === Application functions === */
 
-static int sndfax_exec(struct ast_channel *chan, void *data)
+static int sndfax_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *parse;
@@ -749,7 +749,7 @@ static int sndfax_exec(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int rcvfax_exec(struct ast_channel *chan, void *data)
+static int rcvfax_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *parse;
index 2d57a51..6b3d512 100644 (file)
@@ -264,7 +264,7 @@ static int send_waveform_to_channel(struct ast_channel *chan, char *waveform, in
        return res;
 }
 
-static int festival_exec(struct ast_channel *chan, void *vdata)
+static int festival_exec(struct ast_channel *chan, const char *vdata)
 {
        int usecache;
        int res = 0;
index 90329b6..dedadfe 100644 (file)
@@ -72,7 +72,7 @@ static inline int dahdi_wait_event(int fd)
        return j;
 }
 
-static int flash_exec(struct ast_channel *chan, void *data)
+static int flash_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        int x;
index d27aa36..504ff7c 100644 (file)
@@ -275,18 +275,19 @@ static void profile_set_param(struct call_followme *f, const char *param, const
 }
 
 /*! \brief Add a new number */
-static struct number *create_followme_number(char *number, int timeout, int numorder)
+static struct number *create_followme_number(const char *number, int timeout, int numorder)
 {
        struct number *cur;
+       char *buf = ast_strdupa(number);
        char *tmp;
 
        if (!(cur = ast_calloc(1, sizeof(*cur))))
                return NULL;
 
        cur->timeout = timeout;
-       if ((tmp = strchr(number, ','))) 
+       if ((tmp = strchr(buf, ',')))
                *tmp = '\0';
-       ast_copy_string(cur->number, number, sizeof(cur->number));
+       ast_copy_string(cur->number, buf, sizeof(cur->number));
        cur->order = numorder;
        ast_debug(1, "Created a number, %s, order of , %d, with a timeout of %ld.\n", cur->number, cur->order, cur->timeout);
 
@@ -996,7 +997,7 @@ static void end_bridge_callback_data_fixup(struct ast_bridge_config *bconfig, st
        bconfig->end_bridge_callback_data = originator;
 }
 
-static int app_exec(struct ast_channel *chan, void *data)
+static int app_exec(struct ast_channel *chan, const char *data)
 {
        struct fm_args targs = { 0, };
        struct ast_bridge_config config;
index 341e52a..66ba9d4 100644 (file)
@@ -226,7 +226,7 @@ static void ast_cdr_fork(struct ast_channel *chan, struct ast_flags optflags, ch
        ast_set_flag(cdr, AST_CDR_FLAG_CHILD | AST_CDR_FLAG_LOCKED);
 }
 
-static int forkcdr_exec(struct ast_channel *chan, void *data)
+static int forkcdr_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *argcopy = NULL;
index 9c10092..93df162 100644 (file)
@@ -61,7 +61,7 @@ static int cpeid_setstatus(struct ast_channel *chan, char *stuff[], int voice)
        return ast_adsi_print(chan, tmp, justify, voice);
 }
 
-static int cpeid_exec(struct ast_channel *chan, void *idata)
+static int cpeid_exec(struct ast_channel *chan, const char *idata)
 {
        int res=0;
        unsigned char cpeid[4];
index c5bc315..f2b9498 100644 (file)
@@ -104,7 +104,7 @@ static int icesencode(char *filename, int fd)
        _exit(0);
 }
 
-static int ices_exec(struct ast_channel *chan, void *data)
+static int ices_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        int fds[2];
index a6fbac5..af4abd7 100644 (file)
@@ -69,7 +69,7 @@ static char *app = "SendImage";
        </application>
  ***/
 
-static int sendimage_exec(struct ast_channel *chan, void *data)
+static int sendimage_exec(struct ast_channel *chan, const char *data)
 {
 
        if (ast_strlen_zero(data)) {
index 13f4bcc..a9c6120 100644 (file)
@@ -59,7 +59,7 @@ static char *app = "IVRDemo";
 
 static int ivr_demo_func(struct ast_channel *chan, void *data)
 {
-       ast_verbose("IVR Demo, data is %s!\n", (char *)data);
+       ast_verbose("IVR Demo, data is %s!\n", (char *) data);
        return 0;
 }
 
@@ -93,22 +93,24 @@ AST_IVR_DECLARE_MENU(ivr_demo, "IVR Demo Main Menu", 0,
        { NULL },
 });
 
-
-static int skel_exec(struct ast_channel *chan, void *data)
+static int skel_exec(struct ast_channel *chan, const char *data)
 {
        int res=0;
+       char *tmp;
        
        if (ast_strlen_zero(data)) {
                ast_log(LOG_WARNING, "skel requires an argument (filename)\n");
                return -1;
        }
        
+       tmp = ast_strdupa(data);
+
        /* Do our thing here */
 
        if (chan->_state != AST_STATE_UP)
                res = ast_answer(chan);
        if (!res)
-               res = ast_ivr_menu_run(chan, &ivr_demo, data);
+               res = ast_ivr_menu_run(chan, &ivr_demo, tmp);
        
        return res;
 }
index 02d7a21..95726a4 100644 (file)
@@ -740,19 +740,14 @@ static int handle_options(struct jack_data *jack_data, const char *__options_str
        return 0;
 }
 
-static int jack_exec(struct ast_channel *chan, void *data)
+static int jack_exec(struct ast_channel *chan, const char *data)
 {
        struct jack_data *jack_data;
-       AST_DECLARE_APP_ARGS(args,
-               AST_APP_ARG(options);
-       );
 
        if (!(jack_data = jack_data_alloc()))
                return -1;
 
-       args.options = data;
-
-       if (!ast_strlen_zero(args.options) && handle_options(jack_data, args.options)) {
+       if (!ast_strlen_zero(data) && handle_options(jack_data, data)) {
                destroy_jack_data(jack_data);
                return -1;
        }
index 19cc04f..1db3b27 100644 (file)
@@ -216,7 +216,7 @@ static struct ast_exten *find_matching_priority(struct ast_context *c, const cha
        return NULL;
 }
 
-static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
+static int _macro_exec(struct ast_channel *chan, const char *data, int exclusive)
 {
        const char *s;
        char *tmp;
@@ -426,7 +426,8 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
                        gosub_level++;
                        ast_debug(1, "Incrementing gosub_level\n");
                } else if (!strcasecmp(runningapp, "GOSUBIF")) {
-                       char *cond, *app_arg, *app2;
+                       char *cond, *app_arg;
+                       char *app2;
                        ast_str_substitute_variables(&tmp_subst, 0, chan, runningdata);
                        app2 = ast_str_buffer(tmp_subst);
                        cond = strsep(&app2, "?");
@@ -454,8 +455,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
                        ast_str_substitute_variables(&tmp_subst, 0, chan, runningdata);
                        tmp2 = ast_str_buffer(tmp_subst);
                        if (!strcasecmp(runningapp, "EXECIF")) {
-                               tmp3 = strchr(tmp2, '|');
-                               if (tmp3) {
+                               if ((tmp3 = strchr(tmp2, '|'))) {
                                        *tmp3++ = '\0';
                                }
                                if (!pbx_checkcondition(tmp2)) {
@@ -569,17 +569,17 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
        return res;
 }
 
-static int macro_exec(struct ast_channel *chan, void *data)
+static int macro_exec(struct ast_channel *chan, const char *data)
 {
        return _macro_exec(chan, data, 0);
 }
 
-static int macroexclusive_exec(struct ast_channel *chan, void *data)
+static int macroexclusive_exec(struct ast_channel *chan, const char *data)
 {
        return _macro_exec(chan, data, 1);
 }
 
-static int macroif_exec(struct ast_channel *chan, void *data) 
+static int macroif_exec(struct ast_channel *chan, const char *data) 
 {
        char *expr = NULL, *label_a = NULL, *label_b = NULL;
        int res = 0;
@@ -604,7 +604,7 @@ static int macroif_exec(struct ast_channel *chan, void *data)
        return res;
 }
                        
-static int macro_exit_exec(struct ast_channel *chan, void *data)
+static int macro_exit_exec(struct ast_channel *chan, const char *data)
 {
        return MACRO_EXIT_RESULT;
 }
index 09858c1..ba278ba 100644 (file)
@@ -861,7 +861,7 @@ static int audio_buffers;
  *  conversion... the numbers have been modified
  *  to give the user a better level of adjustability
  */
-static char const gain_map[] = {
+static const char gain_map[] = {
        -15,
        -13,
        -10,
@@ -876,7 +876,7 @@ static char const gain_map[] = {
 };
 
 
-static int admin_exec(struct ast_channel *chan, void *data);
+static int admin_exec(struct ast_channel *chan, const char *data);
 static void *recordthread(void *args);
 
 static char *istalking(int x)
@@ -1144,7 +1144,7 @@ cnfout:
 
 static char *complete_meetmecmd(const char *line, const char *word, int pos, int state)
 {
-       static char *cmds[] = {"concise", "lock", "unlock", "mute", "unmute", "kick", "list", NULL};
+       static const char * const cmds[] = {"concise", "lock", "unlock", "mute", "unmute", "kick", "list", NULL};
 
        int len = strlen(word);
        int which = 0;
@@ -3600,7 +3600,7 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno,
 }
 
 /*! \brief The MeetmeCount application */
-static int count_exec(struct ast_channel *chan, void *data)
+static int count_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_conference *conf;
@@ -3646,7 +3646,7 @@ static int count_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief The meetme() application */
-static int conf_exec(struct ast_channel *chan, void *data)
+static int conf_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        char confno[MAX_CONFNUM] = "";
@@ -3657,7 +3657,8 @@ static int conf_exec(struct ast_channel *chan, void *data)
        int dynamic = 0;
        int empty = 0, empty_no_pin = 0;
        int always_prompt = 0;
-       char *notdata, *info, the_pin[MAX_PIN] = "";
+       const char *notdata;
+       char *info, the_pin[MAX_PIN] = "";
        AST_DECLARE_APP_ARGS(args,
                AST_APP_ARG(confno);
                AST_APP_ARG(options);
@@ -3920,7 +3921,7 @@ static struct ast_conf_user *find_user(struct ast_conference *conf, char *caller
 
 /*! \brief The MeetMeadmin application */
 /* MeetMeAdmin(confno, command, caller) */
-static int admin_exec(struct ast_channel *chan, void *data) {
+static int admin_exec(struct ast_channel *chan, const char *data) {
        char *params;
        struct ast_conference *cnf;
        struct ast_conf_user *user = NULL;
@@ -4102,7 +4103,7 @@ static int admin_exec(struct ast_channel *chan, void *data) {
 
 /*--- channel_admin_exec: The MeetMeChannelAdmin application */
 /* MeetMeChannelAdmin(channel, command) */
-static int channel_admin_exec(struct ast_channel *chan, void *data) {
+static int channel_admin_exec(struct ast_channel *chan, const char *data) {
        char *params;
        struct ast_conference *conf = NULL;
        struct ast_conf_user *user = NULL;
@@ -4235,7 +4236,7 @@ static int action_meetmeunmute(struct mansession *s, const struct message *m)
        return meetmemute(s, m, 0);
 }
 
-static char mandescr_meetmelist[] =
+static const char mandescr_meetmelist[] =
 "Description: Lists all users in a particular MeetMe conference.\n"
 "MeetmeList will follow as separate events, followed by a final event called\n"
 "MeetmeListComplete.\n"
@@ -5552,7 +5553,7 @@ static struct sla_trunk_ref *sla_choose_idle_trunk(const struct sla_station *sta
        return trunk_ref;
 }
 
-static int sla_station_exec(struct ast_channel *chan, void *data)
+static int sla_station_exec(struct ast_channel *chan, const char *data)
 {
        char *station_name, *trunk_name;
        struct sla_station *station;
@@ -5759,7 +5760,7 @@ AST_APP_OPTIONS(sla_trunk_opts, BEGIN_OPTIONS
        AST_APP_OPTION_ARG('M', SLA_TRUNK_OPT_MOH, SLA_TRUNK_OPT_ARG_MOH_CLASS),
 END_OPTIONS );
 
-static int sla_trunk_exec(struct ast_channel *chan, void *data)
+static int sla_trunk_exec(struct ast_channel *chan, const char *data)
 {
        char conf_name[MAX_CONFNUM];
        struct ast_conference *conf;
index 4f27fa7..aa7a118 100644 (file)
@@ -55,9 +55,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
        </application>
  ***/
 
-static char *app = "Milliwatt";
+static const char app[] = "Milliwatt";
 
-static char digital_milliwatt[] = {0x1e,0x0b,0x0b,0x1e,0x9e,0x8b,0x8b,0x9e} ;
+static const char digital_milliwatt[] = {0x1e,0x0b,0x0b,0x1e,0x9e,0x8b,0x8b,0x9e} ;
 
 static void *milliwatt_alloc(struct ast_channel *chan, void *params)
 {
@@ -139,7 +139,7 @@ static int old_milliwatt_exec(struct ast_channel *chan)
        return -1;
 }
 
-static int milliwatt_exec(struct ast_channel *chan, void *data)
+static int milliwatt_exec(struct ast_channel *chan, const char *data)
 {
        const char *options = data;
        struct ast_app *playtones_app;
index fffa714..59323ee 100644 (file)
@@ -1922,7 +1922,7 @@ static void queue_mwi_event(const char *mbx, const char *ctx, int urgent, int ne
 
 /*!\internal
  * \brief Send MWI using interal Asterisk event subsystem */
-static int minivm_mwi_exec(struct ast_channel *chan, void *data)
+static int minivm_mwi_exec(struct ast_channel *chan, const char *data)
 {
        int argc;
        char *argv[4];
@@ -1964,7 +1964,7 @@ static int minivm_mwi_exec(struct ast_channel *chan, void *data)
 
 /*!\internal
  * \brief Notify voicemail account owners - either generic template or user specific */
-static int minivm_notify_exec(struct ast_channel *chan, void *data)
+static int minivm_notify_exec(struct ast_channel *chan, const char *data)
 {
        int argc;
        char *argv[2];
@@ -2044,7 +2044,7 @@ static int minivm_notify_exec(struct ast_channel *chan, void *data)
 
 /*!\internal
  * \brief Dialplan function to record voicemail */
-static int minivm_record_exec(struct ast_channel *chan, void *data)
+static int minivm_record_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *tmp;
@@ -2101,7 +2101,7 @@ static int minivm_record_exec(struct ast_channel *chan, void *data)
 
 /*!\internal
  * \brief Play voicemail prompts - either generic or user specific */
-static int minivm_greet_exec(struct ast_channel *chan, void *data)
+static int minivm_greet_exec(struct ast_channel *chan, const char *data)
 {
        struct leave_vm_options leave_options = { 0, '\0'};
        int argc;
@@ -2288,7 +2288,7 @@ static int minivm_greet_exec(struct ast_channel *chan, void *data)
 
 /*!\internal
  * \brief Dialplan application to delete voicemail */
-static int minivm_delete_exec(struct ast_channel *chan, void *data)
+static int minivm_delete_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char filename[BUFSIZ];
@@ -2326,7 +2326,7 @@ static int minivm_delete_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief Record specific messages for voicemail account */
-static int minivm_accmess_exec(struct ast_channel *chan, void *data)
+static int minivm_accmess_exec(struct ast_channel *chan, const char *data)
 {
        int argc = 0;
        char *argv[2];
index b8a4e5d..6cd5871 100644 (file)
@@ -322,7 +322,7 @@ static void launch_monitor_thread(struct ast_channel *chan, const char *filename
        ast_pthread_create_detached_background(&thread, NULL, mixmonitor_thread, mixmonitor);
 }
 
-static int mixmonitor_exec(struct ast_channel *chan, void *data)
+static int mixmonitor_exec(struct ast_channel *chan, const char *data)
 {
        int x, readvol = 0, writevol = 0;
        struct ast_flags flags = {0};
@@ -403,7 +403,7 @@ static int mixmonitor_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int stop_mixmonitor_exec(struct ast_channel *chan, void *data)
+static int stop_mixmonitor_exec(struct ast_channel *chan, const char *data)
 {
        ast_audiohook_detach_source(chan, mixmonitor_spy_type);
        return 0;
index 25b5c49..0947681 100644 (file)
@@ -63,9 +63,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
                </see-also>
        </application>
  ***/  
-static char *app_morsecode = "Morsecode";
+static const char app_morsecode[] = "Morsecode";
 
-static char *morsecode[] = {
+static const char * const morsecode[] = {
        "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", /*  0-15 */
        "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", /* 16-31 */
        " ",      /* 32 - <space> */
@@ -118,10 +118,10 @@ static void playtone(struct ast_channel *chan, int tone, int len)
        ast_playtones_stop(chan);
 }
 
-static int morsecode_exec(struct ast_channel *chan, void *data)
+static int morsecode_exec(struct ast_channel *chan, const char *data)
 {
        int res=0, ditlen, tone;
-       char *digit;
+       const char *digit;
        const char *ditlenc, *tonec;
 
        if (ast_strlen_zero(data)) {
@@ -147,7 +147,7 @@ static int morsecode_exec(struct ast_channel *chan, void *data)
 
        for (digit = data; *digit; digit++) {
                int digit2 = *digit;
-               char *dahdit;
+               const char *dahdit;
                if (digit2 < 0) {
                        continue;
                }
index 41e27f9..dbab73b 100644 (file)
@@ -117,7 +117,7 @@ static int timed_read(int fd, void *data, int datalen, int timeout)
        
 }
 
-static int mp3_exec(struct ast_channel *chan, void *data)
+static int mp3_exec(struct ast_channel *chan, const char *data)
 {
        int res=0;
        int fds[2];
index 112e012..ec93478 100644 (file)
@@ -105,7 +105,7 @@ static int timed_read(int fd, void *data, int datalen)
        
 }
 
-static int NBScat_exec(struct ast_channel *chan, void *data)
+static int NBScat_exec(struct ast_channel *chan, const char *data)
 {
        int res=0;
        int fds[2];
index 15d34a5..b9bb882 100644 (file)
@@ -89,7 +89,7 @@ static const char app_originate[] = "Originate";
        </application>
  ***/
 
-static int originate_exec(struct ast_channel *chan, void *data)
+static int originate_exec(struct ast_channel *chan, const char *data)
 {
        AST_DECLARE_APP_ARGS(args,
                AST_APP_ARG(tech_data);
index 7c553b5..a5a57bc 100644 (file)
@@ -1296,8 +1296,8 @@ static int osp_finish(
  * \return 0 Success, -1 Failed
  */
 static int ospauth_exec(
-       struct ast_channel* chan,
-       void* data)
+       struct ast_channel *chan,
+       const char *data)
 {
        int res;
        const char* provider = OSP_DEF_PROVIDER;
@@ -1377,7 +1377,7 @@ static int ospauth_exec(
  */
 static int osplookup_exec(
        struct ast_channel* chan,
-       void* data)
+       const void* data)
 {
        int res, cres;
        const char* provider = OSP_DEF_PROVIDER;
@@ -1551,7 +1551,7 @@ static int osplookup_exec(
  */
 static int ospnext_exec(
        struct ast_channel* chan,
-       void* data)
+       const void* data)
 {
        int res;
        const char* provider = OSP_DEF_PROVIDER;
@@ -1707,7 +1707,7 @@ static int ospnext_exec(
  */
 static int ospfinished_exec(
        struct ast_channel* chan,
-       void* data)
+       const void* data)
 {
        int res = 1;
        int cause = 0;
index 9e0547b..b277dab 100644 (file)
@@ -118,7 +118,7 @@ AST_APP_OPTIONS(page_opts, {
 });
 
 
-static int page_exec(struct ast_channel *chan, void *data)
+static int page_exec(struct ast_channel *chan, const char *data)
 {
        char *tech, *resource, *tmp;
        char meetmeopts[88], originator[AST_CHANNEL_NAME], *opts[0];
index 42a7c28..d8858b6 100644 (file)
@@ -85,7 +85,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "ParkAndAnnounce";
 
-static int parkandannounce_exec(struct ast_channel *chan, void *data)
+static int parkandannounce_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        int lot, timeout = 0, dres;
index a61c49b..54e90ff 100644 (file)
@@ -380,7 +380,7 @@ static int say_init_mode(const char *mode) {
 static char *__say_cli_init(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        const char *old_mode = say_api_buf[0] ? say_new : say_old;
-       char *mode;
+       const char *mode;
        switch (cmd) {
        case CLI_INIT:
                e->command = "say load [new|old]";
@@ -415,7 +415,7 @@ static struct ast_cli_entry cli_playback[] = {
        AST_CLI_DEFINE(__say_cli_init, "Set or show the say mode"),
 };
 
-static int playback_exec(struct ast_channel *chan, void *data)
+static int playback_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        int mres = 0;
index 6aff168..c9c0fbb 100644 (file)
@@ -72,7 +72,7 @@ static const char stopplaytones_app[] = "StopPlayTones";
        </application>
  ***/
 
-static int handle_playtones(struct ast_channel *chan, void *data)
+static int handle_playtones(struct ast_channel *chan, const char *data)
 {
        struct ast_tone_zone_sound *ts;
        int res;
@@ -99,7 +99,7 @@ static int handle_playtones(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int handle_stopplaytones(struct ast_channel *chan, void *data)
+static int handle_stopplaytones(struct ast_channel *chan, const char *data)
 {
        ast_playtones_stop(chan);
 
index a2e7152..37b440b 100644 (file)
@@ -80,7 +80,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "PrivacyManager";
 
-static int privacy_exec (struct ast_channel *chan, void *data)
+static int privacy_exec(struct ast_channel *chan, const char *data)
 {
        int res=0;
        int retries;
index c88c77e..d792cdf 100644 (file)
@@ -593,7 +593,7 @@ enum queue_result {
        QUEUE_CONTINUE = 7,
 };
 
-const struct {
+static const struct {
        enum queue_result id;
        char *text;
 } queue_results[] = {
@@ -2403,7 +2403,7 @@ static void do_hang(struct callattempt *o)
 static char *vars2manager(struct ast_channel *chan, char *vars, size_t len)
 {
        struct ast_str *buf = ast_str_thread_get(&ast_str_thread_global_buf, len + 1);
-       char *tmp;
+       const char *tmp;
 
        if (pbx_builtin_serialize_variables(chan, &buf)) {
                int i, j;
@@ -4651,7 +4651,7 @@ static int set_member_paused(const char *queuename, const char *interface, const
 }
 
 /* \brief Sets members penalty, if queuename=NULL we set member penalty in all the queues. */
-static int set_member_penalty(char *queuename, char *interface, int penalty)
+static int set_member_penalty(const char *queuename, const char *interface, int penalty)
 {
        int foundinterface = 0, foundqueue = 0;
        struct call_queue *q;
@@ -4828,7 +4828,7 @@ static void reload_queue_members(void)
 }
 
 /*! \brief PauseQueueMember application */
-static int pqm_exec(struct ast_channel *chan, void *data)
+static int pqm_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
        AST_DECLARE_APP_ARGS(args,
@@ -4864,7 +4864,7 @@ static int pqm_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief UnPauseQueueMember application */
-static int upqm_exec(struct ast_channel *chan, void *data)
+static int upqm_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
        AST_DECLARE_APP_ARGS(args,
@@ -4900,7 +4900,7 @@ static int upqm_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief RemoveQueueMember application */
-static int rqm_exec(struct ast_channel *chan, void *data)
+static int rqm_exec(struct ast_channel *chan, const char *data)
 {
        int res=-1;
        char *parse, *temppos = NULL;
@@ -4957,7 +4957,7 @@ static int rqm_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief AddQueueMember application */
-static int aqm_exec(struct ast_channel *chan, void *data)
+static int aqm_exec(struct ast_channel *chan, const char *data)
 {
        int res=-1;
        char *parse, *temppos = NULL;
@@ -5020,7 +5020,7 @@ static int aqm_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief QueueLog application */
-static int ql_exec(struct ast_channel *chan, void *data)
+static int ql_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
 
@@ -5095,7 +5095,7 @@ static void copy_rules(struct queue_ent *qe, const char *rulename)
  * 6. Try 4 again unless some condition (such as an expiration time) causes us to 
  *    exit the queue.
  */
-static int queue_exec(struct ast_channel *chan, void *data)
+static int queue_exec(struct ast_channel *chan, const char *data)
 {
        int res=-1;
        int ringing=0;
@@ -6145,7 +6145,7 @@ static void do_print(struct mansession *s, int fd, const char *str)
  * List the queues strategy, calls processed, members logged in,
  * other queue statistics such as avg hold time.
 */
-static char *__queues_show(struct mansession *s, int fd, int argc, char **argv)
+static char *__queues_show(struct mansession *s, int fd, int argc, const char * const *argv)
 {
        struct call_queue *q;
        struct ast_str *out = ast_str_alloca(240);
@@ -6320,7 +6320,7 @@ static char *queue_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a
  */
 static int manager_queues_show(struct mansession *s, const struct message *m)
 {
-       char *a[] = { "queue", "show" };
+       static const char * const a[] = { "queue", "show" };
 
        __queues_show(s, -1, 2, a);
        astman_append(s, "\r\n\r\n");   /* Properly terminate Manager output */
@@ -6756,7 +6756,7 @@ static int manager_queue_member_penalty(struct mansession *s, const struct messa
 
 static char *handle_queue_add_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *queuename, *interface, *membername = NULL, *state_interface = NULL;
+       const char *queuename, *interface, *membername = NULL, *state_interface = NULL;
        int penalty;
 
        switch ( cmd ) {
@@ -6871,7 +6871,7 @@ static char *complete_queue_remove_member(const char *line, const char *word, in
 
 static char *handle_queue_remove_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *queuename, *interface;
+       const char *queuename, *interface;
 
        switch (cmd) {
        case CLI_INIT:
@@ -6936,7 +6936,7 @@ static char *complete_queue_pause_member(const char *line, const char *word, int
 
 static char *handle_queue_pause_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *queuename, *interface, *reason;
+       const char *queuename, *interface, *reason;
        int paused;
 
        switch (cmd) {
@@ -7010,7 +7010,7 @@ static char *complete_queue_set_member_penalty(const char *line, const char *wor
  
 static char *handle_queue_set_member_penalty(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *queuename = NULL, *interface;
+       const char *queuename = NULL, *interface;
        int penalty = 0;
 
        switch (cmd) {
@@ -7072,7 +7072,7 @@ static char *complete_queue_rule_show(const char *line, const char *word, int po
 
 static char *handle_queue_rule_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *rule;
+       const char *rule;
        struct rule_list *rl_iter;
        struct penalty_rule *pr_iter;
        switch (cmd) {
index d845c59..3e22d2e 100644 (file)
@@ -122,9 +122,7 @@ AST_APP_OPTIONS(read_app_options, {
 
 static char *app = "Read";
 
-#define ast_next_data(instr,ptr,delim) if((ptr=strchr(instr,delim))) { *(ptr) = '\0' ; ptr++;}
-
-static int read_exec(struct ast_channel *chan, void *data)
+static int read_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char tmp[256] = "";
index d5075ed..ef59aa5 100644 (file)
@@ -125,7 +125,7 @@ AST_APP_OPTIONS(readexten_app_options, {
 
 static char *app = "ReadExten";
 
-static int readexten_exec(struct ast_channel *chan, void *data)
+static int readexten_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char exten[256] = "";
index b65dbf6..252c445 100644 (file)
@@ -67,7 +67,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app_readfile = "ReadFile";
 
-static int readfile_exec(struct ast_channel *chan, void *data)
+static int readfile_exec(struct ast_channel *chan, const char *data)
 {
        int res=0;
        char *s, *varname=NULL, *file=NULL, *length=NULL, *returnvar=NULL;
index 69bbd53..06d9c2c 100644 (file)
@@ -129,7 +129,7 @@ AST_APP_OPTIONS(app_opts,{
        AST_APP_OPTION('x', OPTION_IGNORE_TERMINATE),
 });
 
-static int record_exec(struct ast_channel *chan, void *data)
+static int record_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        int count = 0;
index c62ab99..a261fc1 100644 (file)
@@ -439,7 +439,7 @@ static char *descrip =
 static int debug = 0;  /* Set this >0 for extra debug output */
 static int nrpts = 0;
 
-static char remdtmfstr[] = "0123456789*#ABCD";
+static const char remdtmfstr[] = "0123456789*#ABCD";
 
 enum {TOP_TOP,TOP_WON,WON_BEFREAD,BEFREAD_AFTERREAD};
 
@@ -13114,7 +13114,7 @@ char *this,*val;
        pthread_exit(NULL);
 }
 
-static int rpt_exec(struct ast_channel *chan, void *data)
+static int rpt_exec(struct ast_channel *chan, const void *data)
 {
        int res=-1,i,rem_totx,rem_rx,remkeyed,n,phone_mode = 0;
        int iskenwood_pci4,authtold,authreq,setting,notremming,reming;
index a4dc0af..55afdf4 100644 (file)
@@ -89,7 +89,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 static char *app_sayunixtime = "SayUnixTime";
 static char *app_datetime = "DateTime";
 
-static int sayunixtime_exec(struct ast_channel *chan, void *data)
+static int sayunixtime_exec(struct ast_channel *chan, const char *data)
 {
        AST_DECLARE_APP_ARGS(args,
                AST_APP_ARG(timeval);
index a1c28a8..68f2d78 100644 (file)
@@ -62,7 +62,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
  ***/
 static char *app = "SendDTMF";
 
-static int senddtmf_exec(struct ast_channel *chan, void *vdata)
+static int senddtmf_exec(struct ast_channel *chan, const char *vdata)
 {
        int res = 0;
        char *data;
@@ -90,7 +90,7 @@ static int senddtmf_exec(struct ast_channel *chan, void *vdata)
        return res;
 }
 
-static char mandescr_playdtmf[] =
+static const char mandescr_playdtmf[] =
 "Description: Plays a dtmf digit on the specified channel.\n"
 "Variables: (all are required)\n"
 "      Channel: Channel name to send digit to\n"
index 2d8ccf8..100358e 100644 (file)
@@ -72,7 +72,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static const char * const app = "SendText";
 
-static int sendtext_exec(struct ast_channel *chan, void *data)
+static int sendtext_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *status = "UNSUPPORTED";
index 6592249..d2dbb89 100644 (file)
@@ -84,7 +84,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app2 = "SetCallerPres";
 
-static int setcallerid_pres_exec(struct ast_channel *chan, void *data)
+static int setcallerid_pres_exec(struct ast_channel *chan, const char *data)
 {
        int pres = -1;
        static int deprecated = 0;
index 338a32f..1796ab4 100644 (file)
@@ -94,7 +94,7 @@ AST_APP_OPTIONS(app_opts,{
 });
 
 
-static int app_exec(struct ast_channel *chan, void *data)
+static int app_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_flags flags;
index 0c53391..a0e0c2f 100644 (file)
@@ -123,7 +123,7 @@ static char *app = "SMS";
  * To pick the two carriers (1300Hz for '1' and 2100 Hz for '0') used by
  * the modulation, we should take one every 13 and 21 samples respectively.
  */
-static signed short wave[] = {
+static const signed short wave[] = {
        0, 392, 782, 1167, 1545, 1913, 2270, 2612, 2939, 3247, 3536, 3802, 4045, 4263, 4455, 4619, 4755, 4862, 4938, 4985,
        5000, 4985, 4938, 4862, 4755, 4619, 4455, 4263, 4045, 3802, 3536, 3247, 2939, 2612, 2270, 1913, 1545, 1167, 782, 392,
        0, -392, -782, -1167,
@@ -1855,7 +1855,7 @@ AST_APP_OPTIONS(sms_options, {
        AST_APP_OPTION_ARG('p', OPTION_PAUSE, OPTION_ARG_PAUSE),
        } );
 
-static int sms_exec(struct ast_channel *chan, void *data)
+static int sms_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        sms_t h = { 0 };
index 6a4889a..2a7ab11 100644 (file)
@@ -69,7 +69,7 @@ AST_APP_OPTIONS(app_opts,{
        AST_APP_OPTION('a', OPTION_ALL),
 });
 
-static int softhangup_exec(struct ast_channel *chan, void *data)
+static int softhangup_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_channel *c = NULL;
        char *cut, *opts[0];
index 8ad5e74..cd1c4d1 100644 (file)
@@ -481,7 +481,7 @@ static struct ast_custom_function speech_function = {
 
 
 /*! \brief SpeechCreate() Dialplan Application */
-static int speech_create(struct ast_channel *chan, void *data)
+static int speech_create(struct ast_channel *chan, const char *data)
 {
        struct ast_speech *speech = NULL;
        struct ast_datastore *datastore = NULL;
@@ -508,7 +508,7 @@ static int speech_create(struct ast_channel *chan, void *data)
 }
 
 /*! \brief SpeechLoadGrammar(Grammar Name,Path) Dialplan Application */
-static int speech_load(struct ast_channel *chan, void *vdata)
+static int speech_load(struct ast_channel *chan, const char *vdata)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
@@ -534,7 +534,7 @@ static int speech_load(struct ast_channel *chan, void *vdata)
 }
 
 /*! \brief SpeechUnloadGrammar(Grammar Name) Dialplan Application */
-static int speech_unload(struct ast_channel *chan, void *data)
+static int speech_unload(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
@@ -549,7 +549,7 @@ static int speech_unload(struct ast_channel *chan, void *data)
 }
 
 /*! \brief SpeechDeactivateGrammar(Grammar Name) Dialplan Application */
-static int speech_deactivate(struct ast_channel *chan, void *data)
+static int speech_deactivate(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
@@ -564,7 +564,7 @@ static int speech_deactivate(struct ast_channel *chan, void *data)
 }
 
 /*! \brief SpeechActivateGrammar(Grammar Name) Dialplan Application */
-static int speech_activate(struct ast_channel *chan, void *data)
+static int speech_activate(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
@@ -579,7 +579,7 @@ static int speech_activate(struct ast_channel *chan, void *data)
 }
 
 /*! \brief SpeechStart() Dialplan Application */
-static int speech_start(struct ast_channel *chan, void *data)
+static int speech_start(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
@@ -593,7 +593,7 @@ static int speech_start(struct ast_channel *chan, void *data)
 }
 
 /*! \brief SpeechProcessingSound(Sound File) Dialplan Application */
-static int speech_processing_sound(struct ast_channel *chan, void *data)
+static int speech_processing_sound(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
@@ -636,7 +636,7 @@ AST_APP_OPTIONS(speech_background_options, BEGIN_OPTIONS
 END_OPTIONS );
 
 /*! \brief SpeechBackground(Sound File,Timeout) Dialplan Application */
-static int speech_background(struct ast_channel *chan, void *data)
+static int speech_background(struct ast_channel *chan, const char *data)
 {
        unsigned int timeout = 0;
        int res = 0, done = 0, started = 0, quieted = 0, max_dtmf_len = 0;
@@ -888,7 +888,7 @@ static int speech_background(struct ast_channel *chan, void *data)
 
 
 /*! \brief SpeechDestroy() Dialplan Application */
-static int speech_destroy(struct ast_channel *chan, void *data)
+static int speech_destroy(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        struct ast_speech *speech = find_speech(chan);
index 64522af..27652c3 100644 (file)
@@ -266,7 +266,7 @@ static void gosub_free(void *data)
        ast_free(oldlist);
 }
 
-static int pop_exec(struct ast_channel *chan, void *data)
+static int pop_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_datastore *stack_store = ast_channel_datastore_find(chan, &stack_info, NULL);
        struct gosub_stack_frame *oldframe;
@@ -290,12 +290,12 @@ static int pop_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int return_exec(struct ast_channel *chan, void *data)
+static int return_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_datastore *stack_store = ast_channel_datastore_find(chan, &stack_info, NULL);
        struct gosub_stack_frame *oldframe;
        AST_LIST_HEAD(, gosub_stack_frame) *oldlist;
-       char *retval = data;
+       const char *retval = data;
 
        if (!stack_store) {
                ast_log(LOG_ERROR, "Return without Gosub: stack is unallocated\n");
@@ -320,7 +320,7 @@ static int return_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int gosub_exec(struct ast_channel *chan, void *data)
+static int gosub_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_datastore *stack_store = ast_channel_datastore_find(chan, &stack_info, NULL);
        AST_LIST_HEAD(, gosub_stack_frame) *oldlist;
@@ -410,7 +410,7 @@ static int gosub_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int gosubif_exec(struct ast_channel *chan, void *data)
+static int gosubif_exec(struct ast_channel *chan, const char *data)
 {
        char *args;
        int res=0;
@@ -537,7 +537,7 @@ static struct ast_custom_function peek_function = {
        .read = peek_read,
 };
 
-static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, char **argv)
+static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, const char * const *argv)
 {
        int old_priority, priority;
        char old_context[AST_MAX_CONTEXT], old_extension[AST_MAX_EXTENSION];
@@ -627,7 +627,7 @@ static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, char **arg
        return RESULT_SUCCESS;
 }
 
-static char usage_gosub[] =
+static const char usage_gosub[] =
 " Usage: GOSUB <context> <extension> <priority> [<optional-argument>]\n"
 "   Cause the channel to execute the specified dialplan subroutine, returning\n"
 " to the dialplan with execution of a Return()\n";
index e06a9cb..6fa2fc9 100644 (file)
@@ -100,7 +100,7 @@ static char *app2 = "TrySystem";
 
 static char *chanvar = "SYSTEMSTATUS";
 
-static int system_exec_helper(struct ast_channel *chan, void *data, int failmode)
+static int system_exec_helper(struct ast_channel *chan, const char *data, int failmode)
 {
        int res = 0;
        struct ast_str *buf = ast_str_thread_get(&buf_buf, 16);
@@ -140,12 +140,12 @@ static int system_exec_helper(struct ast_channel *chan, void *data, int failmode
        return res;
 }
 
-static int system_exec(struct ast_channel *chan, void *data)
+static int system_exec(struct ast_channel *chan, const char *data)
 {
        return system_exec_helper(chan, data, -1);
 }
 
-static int trysystem_exec(struct ast_channel *chan, void *data)
+static int trysystem_exec(struct ast_channel *chan, const char *data)
 {
        return system_exec_helper(chan, data, 0);
 }
index 85f0dff..c90b60d 100644 (file)
@@ -73,7 +73,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "BackgroundDetect";
 
-static int background_detect_exec(struct ast_channel *chan, void *data)
+static int background_detect_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *tmp;
index 76a953f..64ce7b4 100644 (file)
@@ -143,10 +143,10 @@ static int sendnoise(struct ast_channel *chan, int ms)
        return res;
 }
 
-static int testclient_exec(struct ast_channel *chan, void *data)
+static int testclient_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
-       char *testid=data;
+       const char *testid=data;
        char fn[80];
        char serverver[80];
        FILE *f;
@@ -318,7 +318,7 @@ static int testclient_exec(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int testserver_exec(struct ast_channel *chan, void *data)
+static int testserver_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char testid[80]="";
index 11107a1..ad6e801 100644 (file)
@@ -74,7 +74,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static const char * const app = "Transfer";
 
-static int transfer_exec(struct ast_channel *chan, void *data)
+static int transfer_exec(struct ast_channel *chan, const char *data)
 {
        int res;
        int len;
index af72b44..234cff6 100644 (file)
@@ -90,7 +90,7 @@ AST_APP_OPTIONS(app_opts,{
        AST_APP_OPTION('w', OPTION_WAIT),
 });
 
-static int sendurl_exec(struct ast_channel *chan, void *data)
+static int sendurl_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *tmp;
index f716ccb..092f22f 100644 (file)
@@ -56,7 +56,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "UserEvent";
 
-static int userevent_exec(struct ast_channel *chan, void *data)
+static int userevent_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
        int x;
index a900dca..ed86e5e 100644 (file)
@@ -72,7 +72,7 @@ static char *app_log = "Log";
  ***/
 
 
-static int verbose_exec(struct ast_channel *chan, void *data)
+static int verbose_exec(struct ast_channel *chan, const char *data)
 {
        int vsize;
        char *parse;
@@ -118,7 +118,7 @@ static int verbose_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int log_exec(struct ast_channel *chan, void *data)
+static int log_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
        int lnum = -1;
index 07bd8aa..4362dbc 100644 (file)
@@ -5090,8 +5090,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                return -1;
        }
 
-       ast_str_set(&tmp, 0, "%s", ext);
-       ext = ast_str_buffer(tmp);
+       ext = ast_strdupa(ext);
        if ((context = strchr(ext, '@'))) {
                *context++ = '\0';
                tmpptr = strchr(context, '&');
@@ -8947,7 +8946,7 @@ static int vm_authenticate(struct ast_channel *chan, char *mailbox, int mailbox_
        return 0;
 }
 
-static int vm_execmain(struct ast_channel *chan, void *data)
+static int vm_execmain(struct ast_channel *chan, const char *data)
 {
        /* XXX This is, admittedly, some pretty horrendous code.  For some
           reason it just seemed a lot easier to do with GOTO's.  I feel
@@ -9655,7 +9654,7 @@ out:
        return res;
 }
 
-static int vm_exec(struct ast_channel *chan, void *data)
+static int vm_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        char *tmp;
@@ -9787,7 +9786,7 @@ static int append_mailbox(const char *context, const char *box, const char *data
        return 0;
 }
 
-static int vm_box_exists(struct ast_channel *chan, void *data) 
+static int vm_box_exists(struct ast_channel *chan, const char *data) 
 {
        struct ast_vm_user svm;
        char *context, *box;
@@ -9851,16 +9850,16 @@ static struct ast_custom_function mailbox_exists_acf = {
        .read = acf_mailbox_exists,
 };
 
-static int vmauthenticate(struct ast_channel *chan, void *data)
+static int vmauthenticate(struct ast_channel *chan, const char *data)
 {
-       char *s = data, *user=NULL, *context=NULL, mailbox[AST_MAX_EXTENSION] = "";
+       char *s, *user=NULL, *context=NULL, mailbox[AST_MAX_EXTENSION] = "";
        struct ast_vm_user vmus;
        char *options = NULL;
        int silent = 0, skipuser = 0;
        int res = -1;
        
-       if (s) {
-               s = ast_strdupa(s);
+       if (data) {
+               s = ast_strdupa(data);
                user = strsep(&s, ",");
                options = strsep(&s, ",");
                if (user) {
index fd5913e..8edd249 100644 (file)
@@ -53,7 +53,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "WaitForRing";
 
-static int waitforring_exec(struct ast_channel *chan, void *data)
+static int waitforring_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_frame *f;
        int res = 0;
index f68b70a..6339b01 100644 (file)
@@ -202,7 +202,7 @@ static int do_waiting(struct ast_channel *chan, int timereqd, time_t waitstart,
        return res;
 }
 
-static int waitfor_exec(struct ast_channel *chan, void *data, int wait_for_silence)
+static int waitfor_exec(struct ast_channel *chan, const char *data, int wait_for_silence)
 {
        int res = 1;
        int timereqd = 1000;
@@ -232,12 +232,12 @@ static int waitfor_exec(struct ast_channel *chan, void *data, int wait_for_silen
        return res;
 }
 
-static int waitforsilence_exec(struct ast_channel *chan, void *data)
+static int waitforsilence_exec(struct ast_channel *chan, const char *data)
 {
        return waitfor_exec(chan, data, 1);
 }
 
-static int waitfornoise_exec(struct ast_channel *chan, void *data)
+static int waitfornoise_exec(struct ast_channel *chan, const char *data)
 {
        return waitfor_exec(chan, data, 0);
 }
index 0b6ccc6..9f13157 100644 (file)
@@ -67,7 +67,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "WaitUntil";
 
-static int waituntil_exec(struct ast_channel *chan, void *data)
+static int waituntil_exec(struct ast_channel *chan, const char *data)
 {
        int res;
        double fraction;
index 0556136..f8144fc 100644 (file)
@@ -186,7 +186,7 @@ static int find_matching_endwhile(struct ast_channel *chan)
        return res;
 }
 
-static int _while_exec(struct ast_channel *chan, void *data, int end)
+static int _while_exec(struct ast_channel *chan, const char *data, int end)
 {
        int res=0;
        const char *while_pri = NULL;
@@ -296,19 +296,19 @@ static int _while_exec(struct ast_channel *chan, void *data, int end)
        return res;
 }
 
-static int while_start_exec(struct ast_channel *chan, void *data) {
+static int while_start_exec(struct ast_channel *chan, const char *data) {
        return _while_exec(chan, data, 0);
 }
 
-static int while_end_exec(struct ast_channel *chan, void *data) {
+static int while_end_exec(struct ast_channel *chan, const char *data) {
        return _while_exec(chan, data, 1);
 }
 
-static int while_exit_exec(struct ast_channel *chan, void *data) {
+static int while_exit_exec(struct ast_channel *chan, const char *data) {
        return _while_exec(chan, data, 2);
 }
 
-static int while_continue_exec(struct ast_channel *chan, void *data)
+static int while_continue_exec(struct ast_channel *chan, const char *data)
 {
        int x;
        const char *prefix = "WHILE", *while_pri=NULL;
index bf94080..4be09b5 100644 (file)
@@ -74,7 +74,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 static char *app = "Zapateller";
 
-static int zapateller_exec(struct ast_channel *chan, void *data)
+static int zapateller_exec(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        int i, answer = 0, nocallerid = 0;
index 6c72d19..205c207 100644 (file)
@@ -282,7 +282,6 @@ static int free_config(void)
 static SQLHSTMT generic_prepare(struct odbc_obj *obj, void *data)
 {
        int res, i;
-       char *sql = data;
        SQLHSTMT stmt;
        SQLINTEGER nativeerror = 0, numfields = 0;
        SQLSMALLINT diagbytes = 0;
@@ -294,9 +293,9 @@ static SQLHSTMT generic_prepare(struct odbc_obj *obj, void *data)
                return NULL;
        }
 
-       res = SQLPrepare(stmt, (unsigned char *)sql, SQL_NTS);
+       res = SQLPrepare(stmt, (unsigned char *) data, SQL_NTS);
        if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
-               ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
+               ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", (char *) data);
                SQLGetDiagField(SQL_HANDLE_STMT, stmt, 1, SQL_DIAG_NUMBER, &numfields, SQL_IS_INTEGER, &diagbytes);
                for (i = 0; i < numfields; i++) {
                        SQLGetDiagRec(SQL_HANDLE_STMT, stmt, i + 1, state, &nativeerror, diagnostic, sizeof(diagnostic), &diagbytes);
index 98b6b7c..8eecee4 100644 (file)
@@ -61,7 +61,7 @@ static sqlite* db = NULL;
 AST_MUTEX_DEFINE_STATIC(sqlite_lock);
 
 /*! \brief SQL table format */
-static char sql_create_table[] = "CREATE TABLE cdr ("
+static const char sql_create_table[] = "CREATE TABLE cdr ("
 "      AcctId          INTEGER PRIMARY KEY,"
 "      clid            VARCHAR(80),"
 "      src             VARCHAR(80),"
index 08b6752..3bd9262 100644 (file)
@@ -56,8 +56,8 @@ AST_MUTEX_DEFINE_STATIC(lock);
 
 static const char config_file[] = "cdr_sqlite3_custom.conf";
 
-static char *desc = "Customizable SQLite3 CDR Backend";
-static char *name = "cdr_sqlite3_custom";
+static const char desc[] = "Customizable SQLite3 CDR Backend";
+static const char name[] = "cdr_sqlite3_custom";
 static sqlite3 *db = NULL;
 
 static char table[80];
index b705b6f..d922d49 100644 (file)
@@ -1708,7 +1708,7 @@ static int agent_logoff(const char *agent, int soft)
 static char *agent_logoff_cmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        int ret;
-       char *agent;
+       const char *agent;
 
        switch (cmd) {
        case CLI_INIT:
@@ -1956,7 +1956,7 @@ static struct ast_cli_entry cli_agents[] = {
  * \returns
  * \sa agentmonitoroutgoing_exec(), load_module().
  */
-static int login_exec(struct ast_channel *chan, void *data)
+static int login_exec(struct ast_channel *chan, const char *data)
 {
        int res=0;
        int tries = 0;
@@ -2284,7 +2284,7 @@ static int login_exec(struct ast_channel *chan, void *data)
  * \returns
  * \sa login_exec(), load_module().
  */
-static int agentmonitoroutgoing_exec(struct ast_channel *chan, void *data)
+static int agentmonitoroutgoing_exec(struct ast_channel *chan, const char *data)
 {
        int exitifnoagentid = 0;
        int nowarnings = 0;
index 16efefb..520ef94 100644 (file)
@@ -782,7 +782,7 @@ static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args
 {
        char tmp[256], *tmp2;
        char *mye, *myc;
-       char *d;
+       const char *d;
        char *res = CLI_SUCCESS;
 
        switch (cmd) {
index ee26f21..5bdfa99 100644 (file)
@@ -797,6 +797,7 @@ static char *cli_console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_a
        if (pvt->owner) {       /* already in a call */
                int i;
                struct ast_frame f = { AST_FRAME_DTMF, 0 };
+               const char *s;
 
                if (a->argc == e->args) {       /* argument is mandatory here */
                        ast_cli(a->fd, "Already in a call. You can only dial digits until you hangup.\n");
@@ -883,7 +884,7 @@ static char *cli_console_hangup(struct ast_cli_entry *e, int cmd, struct ast_cli
 
 static char *cli_console_mute(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *s;
+       const char *s;
        struct console_pvt *pvt = get_active_pvt();
        char *res = CLI_SUCCESS;
 
index da16b57..ce490e6 100644 (file)
@@ -620,7 +620,7 @@ struct dahdi_distRings {
        struct ringContextData ringContext[3];
 };
 
-static char *subnames[] = {
+static const char * const subnames[] = {
        "Real",
        "Callwait",
        "Threeway"
@@ -2364,7 +2364,7 @@ out:
        return res;
 }
 
-static char *events[] = {
+static const char * const events[] = {
        "No event",
        "On hook",
        "Ring/Answered",
@@ -2409,7 +2409,7 @@ static char *alarm2str(int alm)
        return alm ? "Unknown Alarm" : "No Alarm";
 }
 
-static char *event2str(int event)
+static const char *event2str(int event)
 {
        static char buf[256];
        if ((event < (ARRAY_LEN(events))) && (event > -1))
@@ -3987,11 +3987,11 @@ static void destroy_all_channels(void)
 #if defined(HAVE_PRI)
 static char *dahdi_send_keypad_facility_app = "DAHDISendKeypadFacility";
 
-static int dahdi_send_keypad_facility_exec(struct ast_channel *chan, void *data)
+static int dahdi_send_keypad_facility_exec(struct ast_channel *chan, const char *data)
 {
        /* Data will be our digit string */
        struct dahdi_pvt *p;
-       char *digits = (char *) data;
+       const char *digits = (const char *) data;
 
        if (ast_strlen_zero(digits)) {
                ast_debug(1, "No digit string sent to application!\n");
@@ -4032,7 +4032,7 @@ static int dahdi_send_keypad_facility_exec(struct ast_channel *chan, void *data)
 #if defined(HAVE_PRI_PROG_W_CAUSE)
 static char *dahdi_send_callrerouting_facility_app = "DAHDISendCallreroutingFacility";
 
-static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, void *data)
+static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, const char *data)
 {
        /* Data will be our digit string */
        struct dahdi_pvt *p;
index f343b3d..383f97e 100644 (file)
@@ -1051,7 +1051,7 @@ static int iax2_fixup(struct ast_channel *oldchannel, struct ast_channel *newcha
 static int iax2_hangup(struct ast_channel *c);
 static int iax2_indicate(struct ast_channel *c, int condition, const void *data, size_t datalen);
 static int iax2_poke_peer(struct iax2_peer *peer, int heldcall);
-static int iax2_provision(struct sockaddr_in *end, int sockfd, char *dest, const char *template, int force);
+static int iax2_provision(struct sockaddr_in *end, int sockfd, const char *dest, const char *template, int force);
 static int iax2_send(struct chan_iax2_pvt *pvt, struct ast_frame *f, unsigned int ts, int seqno, int now, int transfer, int final);
 static int iax2_sendhtml(struct ast_channel *c, int subclass, const char *data, int datalen);
 static int iax2_sendimage(struct ast_channel *c, struct ast_frame *img);
@@ -2660,7 +2660,7 @@ static char *handle_cli_iax2_prune_realtime(struct ast_cli_entry *e, int cmd, st
 {
        struct iax2_peer *peer = NULL;
        struct iax2_user *user = NULL;
-       static char *choices[] = { "all", NULL };
+       static const char * const choices[] = { "all", NULL };
        char *cmplt;
 
        switch (cmd) {
@@ -5377,7 +5377,7 @@ static char *handle_cli_iax2_show_users(struct ast_cli_entry *e, int cmd, struct
 #undef FORMAT2
 }
 
-static int __iax2_show_peers(int manager, int fd, struct mansession *s, int argc, char *argv[])
+static int __iax2_show_peers(int manager, int fd, struct mansession *s, const int argc, const char * const argv[])
 {
        regex_t regexbuf;
        int havepattern = 0;
@@ -5708,14 +5708,14 @@ static char *handle_cli_iax2_show_firmware(struct ast_cli_entry *e, int cmd, str
 /*! \brief callback to display iax peers in manager */
 static int manager_iax2_show_peers(struct mansession *s, const struct message *m)
 {
-       char *a[] = { "iax2", "show", "users" };
+       static const char * const a[] = { "iax2", "show", "peers" };
        const char *id = astman_get_header(m,"ActionID");
        char idtext[256] = "";
 
        if (!ast_strlen_zero(id))
                snprintf(idtext, sizeof(idtext), "ActionID: %s\r\n", id);
        astman_send_ack(s, m, "Peer status list will follow");
-       return __iax2_show_peers(1, -1, s, 3, a );
+       return __iax2_show_peers(1, -1, s, 3, a);
 } 
 
 /*! \brief callback to display iax peers in manager format */
@@ -7987,9 +7987,6 @@ static int iax_park(struct ast_channel *chan1, struct ast_channel *chan2)
        return -1;
 }
 
-
-static int iax2_provision(struct sockaddr_in *end, int sockfd, char *dest, const char *template, int force);
-
 static int check_provisioning(struct sockaddr_in *sin, int sockfd, char *si, unsigned int ver)
 {
        unsigned int ourver;
@@ -10279,7 +10276,7 @@ static int iax2_do_register(struct iax2_registry *reg)
        return 0;
 }
 
-static int iax2_provision(struct sockaddr_in *end, int sockfd, char *dest, const char *template, int force)
+static int iax2_provision(struct sockaddr_in *end, int sockfd, const char *dest, const char *template, int force)
 {
        /* Returns 1 if provisioned, -1 if not able to find destination, or 0 if no provisioning
           is found for template */
@@ -10331,7 +10328,7 @@ static char *papp = "IAX2Provision";
 /*! iax2provision
 \ingroup applications
 */
-static int iax2_prov_app(struct ast_channel *chan, void *data)
+static int iax2_prov_app(struct ast_channel *chan, const char *data)
 {
        int res;
        char *sdata;
index 0ba8290..be38e87 100644 (file)
@@ -119,7 +119,7 @@ static const char config[] = "mgcp.conf";
 #define MGCP_CX_INACTIVE       4
 /*! } */
 
-static char *mgcp_cxmodes[] = {
+static const char * const mgcp_cxmodes[] = {
        "sendonly",
        "recvonly",
        "sendrecv",
@@ -1098,7 +1098,7 @@ static char *handle_mgcp_audit_endpoint(struct ast_cli_entry *e, int cmd, struct
        if (a->argc != 4)
                return CLI_SHOWUSAGE;
        /* split the name into parts by null */
-       ename = a->argv[3];
+       ename = ast_strdupa(a->argv[3]);
        gname = ename;
        while (*gname) {
                if (*gname == '@') {
@@ -1919,7 +1919,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
        return 0;
 }
 
-static int add_header(struct mgcp_request *req, char *var, char *value)
+static int add_header(struct mgcp_request *req, const char *var, const char *value)
 {
        if (req->len >= sizeof(req->data) - 4) {
                ast_log(LOG_WARNING, "Out of space, can't add anymore\n");
index 01af221..d757984 100644 (file)
@@ -711,11 +711,11 @@ static void release_chan(struct misdn_bchannel *bc);
 
 #if defined(AST_MISDN_ENHANCEMENTS)
 static const char misdn_command_name[] = "misdn_command";
-static int misdn_command_exec(struct ast_channel *chan, void *data);
+static int misdn_command_exec(struct ast_channel *chan, const char *data);
 #endif /* defined(AST_MISDN_ENHANCEMENTS) */
-static int misdn_check_l2l1(struct ast_channel *chan, void *data);
-static int misdn_set_opt_exec(struct ast_channel *chan, void *data);
-static int misdn_facility_exec(struct ast_channel *chan, void *data);
+static int misdn_check_l2l1(struct ast_channel *chan, const char *data);
+static int misdn_set_opt_exec(struct ast_channel *chan, const char *data);
+static int misdn_facility_exec(struct ast_channel *chan, const char *data);
 
 int chan_misdn_jb_empty(struct misdn_bchannel *bc, char *buf, int len);
 
@@ -748,7 +748,7 @@ static struct chan_list *get_chan_by_ast(struct ast_channel *ast)
        return NULL;
 }
 
-static struct chan_list *get_chan_by_ast_name(char *name)
+static struct chan_list *get_chan_by_ast_name(const char *name)
 {
        struct chan_list *tmp;
 
@@ -4025,7 +4025,7 @@ struct state_struct {
        char txt[255];
 };
 
-static struct state_struct state_array[] = {
+static const struct state_struct state_array[] = {
 /* *INDENT-OFF* */
        { MISDN_NOTHING,             "NOTHING" },             /* at beginning */
        { MISDN_WAITING4DIGS,        "WAITING4DIGS" },        /* when waiting for infos */
@@ -5125,11 +5125,11 @@ static const struct FacParm Fac_Msgs[] = {
 
 static char *handle_cli_misdn_send_facility(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *channame;
-       char *nr;
+       const char *channame;
+       const char *nr;
        struct chan_list *tmp;
        int port;
-       char *served_nr;
+       const char *served_nr;
        struct misdn_bchannel dummy, *bc=&dummy;
        unsigned max_len;
 
@@ -5381,8 +5381,8 @@ static char *handle_cli_misdn_send_restart(struct ast_cli_entry *e, int cmd, str
 
 static char *handle_cli_misdn_send_digit(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *channame;
-       char *msg;
+       const char *channame;
+       const char *msg;
        struct chan_list *tmp;
        int i, msglen;
 
@@ -5430,7 +5430,7 @@ static char *handle_cli_misdn_send_digit(struct ast_cli_entry *e, int cmd, struc
 
 static char *handle_cli_misdn_toggle_echocancel(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *channame;
+       const char *channame;
        struct chan_list *tmp;
 
        switch (cmd) {
@@ -5476,8 +5476,8 @@ static char *handle_cli_misdn_toggle_echocancel(struct ast_cli_entry *e, int cmd
 
 static char *handle_cli_misdn_send_display(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *channame;
-       char *msg;
+       const char *channame;
+       const char *msg;
        struct chan_list *tmp;
 
        switch (cmd) {
@@ -11357,7 +11357,7 @@ static const struct misdn_command_table misdn_commands[] = {
  * \retval 0 on success.
  * \retval -1 on error.
  */
-static int misdn_command_exec(struct ast_channel *chan, void *data)
+static int misdn_command_exec(struct ast_channel *chan, const char *data)
 {
        char *parse;
        unsigned index;
@@ -11397,7 +11397,7 @@ static int misdn_command_exec(struct ast_channel *chan, void *data)
 }
 #endif /* defined(AST_MISDN_ENHANCEMENTS) */
 
-static int misdn_facility_exec(struct ast_channel *chan, void *data)
+static int misdn_facility_exec(struct ast_channel *chan, const char *data)
 {
        struct chan_list *ch = MISDN_ASTERISK_TECH_PVT(chan);
        char *parse;
@@ -11476,7 +11476,7 @@ static int misdn_facility_exec(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int misdn_check_l2l1(struct ast_channel *chan, void *data)
+static int misdn_check_l2l1(struct ast_channel *chan, const char *data)
 {
        char *parse;
        char group[BUFFERSIZE + 1];
@@ -11550,7 +11550,7 @@ static int misdn_check_l2l1(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int misdn_set_opt_exec(struct ast_channel *chan, void *data)
+static int misdn_set_opt_exec(struct ast_channel *chan, const char *data)
 {
        struct chan_list *ch = MISDN_ASTERISK_TECH_PVT(chan);
        char *tok;
index 92b9355..8729f10 100644 (file)
@@ -53,7 +53,7 @@ static const char tdesc[] = "Network Broadcast Sound Driver";
 static int prefformat = AST_FORMAT_SLINEAR;
 
 static char context[AST_MAX_EXTENSION] = "default";
-static char type[] = "NBS";
+static const char type[] = "NBS";
 
 /* NBS creates private structures on demand */
    
index a967cc9..b3ff448 100644 (file)
@@ -305,7 +305,7 @@ struct chan_oss_pvt {
 };
 
 /*! forward declaration */
-static struct chan_oss_pvt *find_desc(char *dev);
+static struct chan_oss_pvt *find_desc(const char *dev);
 
 static char *oss_active;        /*!< the active device */
 
@@ -367,7 +367,7 @@ static struct ast_channel_tech oss_tech = {
 /*!
  * \brief returns a pointer to the descriptor with the given name
  */
-static struct chan_oss_pvt *find_desc(char *dev)
+static struct chan_oss_pvt *find_desc(const char *dev)
 {
        struct chan_oss_pvt *o = NULL;
 
@@ -1075,7 +1075,8 @@ static char *console_flash(struct ast_cli_entry *e, int cmd, struct ast_cli_args
 
 static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *s = NULL, *mye = NULL, *myc = NULL;
+       char *s = NULL;
+       char *mye = NULL, *myc = NULL;
        struct chan_oss_pvt *o = find_desc(oss_active);
 
        if (cmd == CLI_INIT) {
@@ -1092,6 +1093,7 @@ static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args
        if (o->owner) { /* already in a call */
                int i;
                struct ast_frame f = { AST_FRAME_DTMF, 0 };
+               const char *s;
 
                if (a->argc == e->args) {       /* argument is mandatory here */
                        ast_cli(a->fd, "Already in a call. You can only dial digits until you hangup.\n");
@@ -1126,7 +1128,7 @@ static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args
 static char *console_mute(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        struct chan_oss_pvt *o = find_desc(oss_active);
-       char *s;
+       const char *s;
        int toggle = 0;
        
        if (cmd == CLI_INIT) {
index 1f3f155..4679265 100644 (file)
@@ -2348,7 +2348,7 @@ static void free_old_route(struct sip_route *route);
 static void list_route(struct sip_route *route);
 static void build_route(struct sip_pvt *p, struct sip_request *req, int backwards);
 static enum check_auth_result register_verify(struct sip_pvt *p, struct sockaddr_in *sin,
-                                             struct sip_request *req, char *uri);
+                                             struct sip_request *req, const char *uri);
 static struct sip_pvt *get_sip_pvt_byid_locked(const char *callid, const char *totag, const char *fromtag);
 static void check_pendings(struct sip_pvt *p);
 static void *sip_park_thread(void *stuff);
@@ -2376,11 +2376,11 @@ static int reply_digest(struct sip_pvt *p, struct sip_request *req, char *header
 static int build_reply_digest(struct sip_pvt *p, int method, char *digest, int digest_len);
 static enum check_auth_result check_auth(struct sip_pvt *p, struct sip_request *req, const char *username,
                                         const char *secret, const char *md5secret, int sipmethod,
-                                        char *uri, enum xmittype reliable, int ignore);
+                                        const char *uri, enum xmittype reliable, int ignore);
 static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_request *req,
-                                             int sipmethod, char *uri, enum xmittype reliable,
+                                             int sipmethod, const char *uri, enum xmittype reliable,
                                              struct sockaddr_in *sin, struct sip_peer **authpeer);
-static int check_user(struct sip_pvt *p, struct sip_request *req, int sipmethod, char *uri, enum xmittype reliable, struct sockaddr_in *sin);
+static int check_user(struct sip_pvt *p, struct sip_request *req, int sipmethod, const char *uri, enum xmittype reliable, struct sockaddr_in *sin);
 
 /*--- Domain handling */
 static int check_sip_domain(const char *domain, char *context, size_t len); /* Check if domain is one of our local domains */
@@ -2485,13 +2485,13 @@ static char *complete_sipnotify(const char *line, const char *word, int pos, int
 static char *sip_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
 static char *sip_show_channelstats(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
 static char *sip_show_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
-static char *sip_do_debug_ip(int fd, char *arg);
-static char *sip_do_debug_peer(int fd, char *arg);
+static char *sip_do_debug_ip(int fd, const char *arg);
+static char *sip_do_debug_peer(int fd, const char *arg);
 static char *sip_do_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
 static char *sip_cli_notify(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
 static char *sip_set_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
-static int sip_dtmfmode(struct ast_channel *chan, void *data);
-static int sip_addheader(struct ast_channel *chan, void *data);
+static int sip_dtmfmode(struct ast_channel *chan, const char *data);
+static int sip_addheader(struct ast_channel *chan, const char *data);
 static int sip_do_reload(enum channelreloadreason reason);
 static char *sip_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
 static int acf_channel_read(struct ast_channel *chan, const char *funcname, char *preparse, char *buf, size_t buflen);
@@ -2619,26 +2619,26 @@ static void build_contact(struct sip_pvt *p);
 /*------Request handling functions */
 static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int *recount, int *nounlock);
 static int handle_request_update(struct sip_pvt *p, struct sip_request *req);
-static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, struct sockaddr_in *sin, int *recount, char *e, int *nounlock);
+static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, struct sockaddr_in *sin, int *recount, const char *e, int *nounlock);
 static int handle_request_refer(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, int *nounlock);
 static int handle_request_bye(struct sip_pvt *p, struct sip_request *req);
-static int handle_request_register(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, char *e);
+static int handle_request_register(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, const char *e);
 static int handle_request_cancel(struct sip_pvt *p, struct sip_request *req);
 static int handle_request_message(struct sip_pvt *p, struct sip_request *req);
-static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, char *e);
+static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, const char *e);
 static void handle_request_info(struct sip_pvt *p, struct sip_request *req);
 static int handle_request_options(struct sip_pvt *p, struct sip_request *req);
 static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, struct sockaddr_in *sin);
-static int handle_request_notify(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, char *e);
+static int handle_request_notify(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, const char *e);
 static int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual *current, struct sip_request *req, int seqno);
 
 /*------Response handling functions */
-static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
-static void handle_response_notify(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
-static void handle_response_refer(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
-static void handle_response_subscribe(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
-static int handle_response_register(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
-static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
+static void handle_response_invite(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno);
+static void handle_response_notify(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno);
+static void handle_response_refer(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno);
+static void handle_response_subscribe(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno);
+static int handle_response_register(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno);
+static void handle_response(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno);
 
 /*------ T38 Support --------- */
 static int transmit_response_with_t38_sdp(struct sip_pvt *p, char *msg, struct sip_request *req, int retrans);
@@ -6598,9 +6598,9 @@ static const char *__get_header(const struct sip_request *req, const char *name,
        for (pass = 0; name && pass < 2;pass++) {
                int x, len = strlen(name);
                for (x = *start; x < req->headers; x++) {
-                       char *header = REQ_OFFSET_TO_STR(req, header[x]);
+                       const char *header = REQ_OFFSET_TO_STR(req, header[x]);
                        if (!strncasecmp(header, name, len)) {
-                               char *r = header + len; /* skip name */
+                               const char *r = header + len;   /* skip name */
                                if (sip_cfg.pedanticsipchecking)
                                        r = ast_skip_blanks(r);
 
@@ -7545,7 +7545,7 @@ static int find_sdp(struct sip_request *req)
           sdp part and the end boundry if it exists */
 
        for (x = 0; x < (req->lines); x++) {
-               char *line = REQ_OFFSET_TO_STR(req, line[x]);
+               const char *line = REQ_OFFSET_TO_STR(req, line[x]);
                if (!strncasecmp(line, boundary, strlen(boundary))){
                        if (found_application_sdp && found_end_of_headers) {
                                req->sdp_end = x-1;
@@ -10859,7 +10859,7 @@ static int manager_sipnotify(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_sipnotify[] =
+static const char mandescr_sipnotify[] =
 "Description: Sends a SIP Notify event\n"
 "All parameters for this event must be specified in the body of this request\n"
 "via multiple Variable: name=value sequences.\n"
@@ -12039,7 +12039,7 @@ AST_THREADSTORAGE(check_auth_buf);
 */
 static enum check_auth_result check_auth(struct sip_pvt *p, struct sip_request *req, const char *username,
                                         const char *secret, const char *md5secret, int sipmethod,
-                                        char *uri, enum xmittype reliable, int ignore)
+                                        const char *uri, enum xmittype reliable, int ignore)
 {
        const char *response;
        char *reqheader, *respheader;
@@ -12404,15 +12404,16 @@ static char *terminate_uri(char *uri)
        - Registration requests are only matched with peers that are marked as "dynamic"
  */
 static enum check_auth_result register_verify(struct sip_pvt *p, struct sockaddr_in *sin,
-                                             struct sip_request *req, char *uri)
+                                             struct sip_request *req, const char *uri)
 {
        enum check_auth_result res = AUTH_NOT_FOUND;
        struct sip_peer *peer;
        char tmp[256];
        char *name, *c;
        char *domain;
+       char *uri2 = ast_strdupa(uri);
 
-       terminate_uri(uri);     /* warning, overwrite the string */
+       terminate_uri(uri2);
 
        ast_copy_string(tmp, get_header(req, "To"), sizeof(tmp));
        if (sip_cfg.pedanticsipchecking)
@@ -12472,7 +12473,7 @@ static enum check_auth_result register_verify(struct sip_pvt *p, struct sockaddr
                        ast_copy_flags(&p->flags[0], &peer->flags[0], SIP_NAT);
                        if (ast_test_flag(&p->flags[1], SIP_PAGE2_REGISTERTRYING))
                                transmit_response(p, "100 Trying", req);
-                       if (!(res = check_auth(p, req, peer->name, peer->secret, peer->md5secret, SIP_REGISTER, uri, XMIT_UNRELIABLE, req->ignore))) {
+                       if (!(res = check_auth(p, req, peer->name, peer->secret, peer->md5secret, SIP_REGISTER, uri2, XMIT_UNRELIABLE, req->ignore))) {
                                if (sip_cancel_destroy(p))
                                        ast_log(LOG_WARNING, "Unable to cancel SIP destruction.  Expect bad things.\n");
 
@@ -13695,7 +13696,7 @@ static enum check_auth_result check_peer_ok(struct sip_pvt *p, char *of,
     \return 0 on success, non-zero on failure
 */
 static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_request *req,
-                                             int sipmethod, char *uri, enum xmittype reliable,
+                                             int sipmethod, const char *uri, enum xmittype reliable,
                                              struct sockaddr_in *sin, struct sip_peer **authpeer)
 {
        char from[256];
@@ -13813,7 +13814,7 @@ static enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_requ
 /*! \brief  Find user 
        If we get a match, this will add a reference pointer to the user object in ASTOBJ, that needs to be unreferenced
 */
-static int check_user(struct sip_pvt *p, struct sip_request *req, int sipmethod, char *uri, enum xmittype reliable, struct sockaddr_in *sin)
+static int check_user(struct sip_pvt *p, struct sip_request *req, int sipmethod, const char *uri, enum xmittype reliable, struct sockaddr_in *sin)
 {
        return check_user_full(p, req, sipmethod, uri, reliable, sin, NULL);
 }
@@ -13830,7 +13831,7 @@ static int get_msg_text(char *buf, int len, struct sip_request *req, int addnewl
        if (y < 0)
                y = 0;
        for (x = 0; x < req->lines; x++) {
-               char *line = REQ_OFFSET_TO_STR(req, line[x]);
+               const char *line = REQ_OFFSET_TO_STR(req, line[x]);
                strncat(buf, line, y); /* safe */
                y -= strlen(line) + 1;
                if (y < 0)
@@ -13949,7 +13950,7 @@ static char *transfermode2str(enum transfermodes mode)
        return "strict";
 }
 
-static struct _map_x_s natmodes[] = {
+static const struct _map_x_s natmodes[] = {
        { SIP_NAT_NEVER,        "No"},
        { SIP_NAT_ROUTE,        "Route"},
        { SIP_NAT_ALWAYS,       "Always"},
@@ -13968,7 +13969,7 @@ static const char *nat2str(int nat)
    delete it. Keeping it enabled generates compiler warnings.
  */
 
-static struct _map_x_s natcfgmodes[] = {
+static const struct _map_x_s natcfgmodes[] = {
        { SIP_NAT_NEVER,        "never"},
        { SIP_NAT_ROUTE,        "route"},
        { SIP_NAT_ALWAYS,       "yes"},
@@ -13989,7 +13990,7 @@ static const char *nat2strconfig(int nat)
 
 
 /* Session-Timer Modes */
-static struct _map_x_s stmodes[] = {
+static const struct _map_x_s stmodes[] = {
         { SESSION_TIMER_MODE_ACCEPT,    "Accept"},
         { SESSION_TIMER_MODE_ORIGINATE, "Originate"},
         { SESSION_TIMER_MODE_REFUSE,    "Refuse"},
@@ -14007,7 +14008,7 @@ static enum st_mode str2stmode(const char *s)
 }
 
 /* Session-Timer Refreshers */
-static struct _map_x_s strefreshers[] = {
+static const struct _map_x_s strefreshers[] = {
         { SESSION_TIMER_REFRESHER_AUTO,     "auto"},
         { SESSION_TIMER_REFRESHER_UAC,      "uac"},
         { SESSION_TIMER_REFRESHER_UAS,      "uas"},
@@ -14166,7 +14167,7 @@ static char *sip_show_users(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
 }
 
 /*! \brief Manager Action SIPShowRegistry description */
-static char mandescr_show_registry[] =
+static const char mandescr_show_registry[] =
 "Description: Lists all registration requests and status\n"
 "Registrations will follow as separate events. followed by a final event called\n"
 "RegistrationsComplete.\n"
@@ -14211,7 +14212,7 @@ static int manager_show_registry(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_show_peers[] = 
+static const char mandescr_show_peers[] = 
 "Description: Lists SIP peers in text format with details on current status.\n"
 "Peerlist will follow as separate events, followed by a final event called\n"
 "PeerlistComplete.\n"
@@ -14447,10 +14448,10 @@ static int peer_dump_func(void *userobj, void *arg, int flags)
 {
        struct sip_peer *peer = userobj;
        int refc = ao2_t_ref(userobj, 0, "");
-       int *fd = arg;
+       struct ast_cli_args *a = (struct ast_cli_args *) arg;
        
-       ast_cli(*fd, "name: %s\ntype: peer\nobjflags: %d\nrefcount: %d\n\n", 
-                        peer->name, 0, refc);
+       ast_cli(a->fd, "name: %s\ntype: peer\nobjflags: %d\nrefcount: %d\n\n", 
+               peer->name, 0, refc);
        return 0;
 }
 
@@ -14458,10 +14459,10 @@ static int dialog_dump_func(void *userobj, void *arg, int flags)
 {
        struct sip_pvt *pvt = userobj;
        int refc = ao2_t_ref(userobj, 0, "");
-       int *fd = arg;
+       struct ast_cli_args *a = (struct ast_cli_args *) arg;
        
-       ast_cli(*fd, "name: %s\ntype: dialog\nobjflags: %d\nrefcount: %d\n\n", 
-                        pvt->callid, 0, refc);
+       ast_cli(a->fd, "name: %s\ntype: dialog\nobjflags: %d\nrefcount: %d\n\n", 
+               pvt->callid, 0, refc);
        return 0;
 }
 
@@ -14485,22 +14486,22 @@ static char *sip_show_objects(struct ast_cli_entry *e, int cmd, struct ast_cli_a
        if (a->argc != 3)
                return CLI_SHOWUSAGE;
        ast_cli(a->fd, "-= Peer objects: %d static, %d realtime, %d autocreate =-\n\n", speerobjs, rpeerobjs, apeerobjs);
-       ao2_t_callback(peers, OBJ_NODATA, peer_dump_func, &a->fd, "initiate ao2_callback to dump peers");
+       ao2_t_callback(peers, OBJ_NODATA, peer_dump_func, a, "initiate ao2_callback to dump peers");
        ast_cli(a->fd, "-= Registry objects: %d =-\n\n", regobjs);
        ASTOBJ_CONTAINER_DUMP(a->fd, tmp, sizeof(tmp), &regl);
        ast_cli(a->fd, "-= Dialog objects:\n\n");
-       ao2_t_callback(dialogs, OBJ_NODATA, dialog_dump_func, &a->fd, "initiate ao2_callback to dump dialogs");
+       ao2_t_callback(dialogs, OBJ_NODATA, dialog_dump_func, a, "initiate ao2_callback to dump dialogs");
        return CLI_SUCCESS;
 }
 /*! \brief Print call group and pickup group */
-static void  print_group(int fd, ast_group_t group, int crlf)
+static void print_group(int fd, ast_group_t group, int crlf)
 {
        char buf[256];
        ast_cli(fd, crlf ? "%s\r\n" : "%s\n", ast_print_group(buf, sizeof(buf), group) );
 }
 
 /*! \brief mapping between dtmf flags and strings */
-static struct _map_x_s dtmfstr[] = {
+static const struct _map_x_s dtmfstr[] = {
        { SIP_DTMF_RFC2833,     "rfc2833" },
        { SIP_DTMF_INFO,        "info" },
        { SIP_DTMF_SHORTINFO,   "shortinfo" },
@@ -14521,7 +14522,7 @@ static int str2dtmfmode(const char *str)
        return map_s_x(dtmfstr, str, -1);
 }
 
-static struct _map_x_s insecurestr[] = {
+static const struct _map_x_s insecurestr[] = {
        { SIP_INSECURE_PORT,    "port" },
        { SIP_INSECURE_INVITE,  "invite" },
        { SIP_INSECURE_PORT | SIP_INSECURE_INVITE, "port,invite" },
@@ -14644,10 +14645,10 @@ static char *sip_prune_realtime(struct ast_cli_entry *e, int cmd, struct ast_cli
        struct sip_peer *peer, *pi;
        int prunepeer = FALSE;
        int multi = FALSE;
-       char *name = NULL;
+       const char *name = NULL;
        regex_t regexbuf;
        struct ao2_iterator i;
-       static char *choices[] = { "all", "like", NULL };
+       static const char * const choices[] = { "all", "like", NULL };
        char *cmplt;
        
        if (cmd == CLI_INIT) {
@@ -14836,7 +14837,7 @@ static char *sip_show_domains(struct ast_cli_entry *e, int cmd, struct ast_cli_a
 }
 #undef FORMAT
 
-static char mandescr_show_peer[] = 
+static const char mandescr_show_peer[] = 
 "Description: Show one SIP peer with details on current status.\n"
 "Variables: \n"
 "  Peer: <name>           The peer name you want to check.\n"
@@ -16393,14 +16394,14 @@ static void handle_request_info(struct sip_pvt *p, struct sip_request *req)
 }
 
 /*! \brief Enable SIP Debugging for a single IP */
-static char *sip_do_debug_ip(int fd, char *arg)
+static char *sip_do_debug_ip(int fd, const char *arg)
 {
        struct hostent *hp;
        struct ast_hostent ahp;
        int port = 0;
        char *p;
 
-       p = arg;
+       p = ast_strdupa(arg);
        strsep(&p, ":");
        if (p)
                port = atoi(p);
@@ -16422,7 +16423,7 @@ static char *sip_do_debug_ip(int fd, char *arg)
 }
 
 /*! \brief  Turn on SIP debugging for a given peer */
-static char *sip_do_debug_peer(int fd, char *arg)
+static char *sip_do_debug_peer(int fd, const char *arg)
 {
        struct sip_peer *peer = find_peer(arg, NULL, TRUE, FINDPEERS, FALSE);
        if (!peer)
@@ -16446,7 +16447,7 @@ static char *sip_do_debug_peer(int fd, char *arg)
 static char *sip_do_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        int oldsipdebug = sipdebug & sip_debug_console;
-       char *what;
+       const char *what;
 
        if (cmd == CLI_INIT) {
                e->command = "sip set debug {on|off|ip|peer}";
@@ -17310,7 +17311,7 @@ static int sip_reinvite_retry(const void *data)
  *
  * This function is only called upon the receipt of a 401/407 response to an UPDATE.
  */
-static void handle_response_update(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static void handle_response_update(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        if (p->options) {
                p->options->auth_type = (resp == 401 ? WWW_AUTH : PROXY_AUTH);
@@ -17321,7 +17322,7 @@ static void handle_response_update(struct sip_pvt *p, int resp, char *rest, stru
 }
 
 /*! \brief Handle SIP response to INVITE dialogue */
-static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static void handle_response_invite(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        int outgoing = ast_test_flag(&p->flags[0], SIP_OUTGOING);
        int res = 0;
@@ -17689,7 +17690,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
 /* \brief Handle SIP response in NOTIFY transaction
        We've sent a NOTIFY, now handle responses to it
   */
-static void handle_response_notify(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static void handle_response_notify(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        switch (resp) {
        case 200:   /* Notify accepted */
@@ -17732,7 +17733,7 @@ static void handle_response_notify(struct sip_pvt *p, int resp, char *rest, stru
 }
 
 /* \brief Handle SIP response in SUBSCRIBE transaction */
-static void handle_response_subscribe(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static void handle_response_subscribe(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        struct sip_peer *peer;
        if (!p->mwi) {
@@ -17803,7 +17804,7 @@ static void handle_response_subscribe(struct sip_pvt *p, int resp, char *rest, s
 /* \brief Handle SIP response in REFER transaction
        We've sent a REFER, now handle responses to it 
   */
-static void handle_response_refer(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static void handle_response_refer(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        enum ast_control_transfer message = AST_TRANSFER_FAILED;
 
@@ -17874,7 +17875,7 @@ static void handle_response_refer(struct sip_pvt *p, int resp, char *rest, struc
 }
 
 /*! \brief Handle responses on REGISTER to services */
-static int handle_response_register(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static int handle_response_register(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        int expires, expires_ms;
        struct sip_registry *r;
@@ -18100,7 +18101,7 @@ static void stop_media_flows(struct sip_pvt *p)
 
 /*! \brief Handle SIP response in dialogue
        \note only called by handle_incoming */
-static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno)
+static void handle_response(struct sip_pvt *p, int resp, const char *rest, struct sip_request *req, int seqno)
 {
        struct ast_channel *owner;
        int sipmethod;
@@ -18810,7 +18811,7 @@ static const char *gettag(const struct sip_request *req, const char *header, cha
 }
 
 /*! \brief Handle incoming notifications */
-static int handle_request_notify(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, char *e)
+static int handle_request_notify(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, const char *e)
 {
        /* This is mostly a skeleton for future improvements */
        /* Mostly created to return proper answers on notifications on outbound REFER's */
@@ -19517,7 +19518,7 @@ static int handle_request_update(struct sip_pvt *p, struct sip_request *req)
  *     plan but try to find the active call and masquerade
  *     into it 
  */
-static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, struct sockaddr_in *sin, int *recount, char *e, int *nounlock)
+static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, struct sockaddr_in *sin, int *recount, const char *e, int *nounlock)
 {
        int res = 1;
        int gotdest;
@@ -19580,8 +19581,8 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
                /* If pedantic is on, we need to check the tags. If they're different, this is
                in fact a forked call through a SIP proxy somewhere. */
                int different;
-               char *initial_rlPart2 = REQ_OFFSET_TO_STR(&p->initreq, rlPart2);
-               char *this_rlPart2 = REQ_OFFSET_TO_STR(req, rlPart2);
+               const char *initial_rlPart2 = REQ_OFFSET_TO_STR(&p->initreq, rlPart2);
+               const char *this_rlPart2 = REQ_OFFSET_TO_STR(req, rlPart2);
                if (sip_cfg.pedanticsipchecking)
                        different = sip_uri_cmp(initial_rlPart2, this_rlPart2);
                else
@@ -21013,7 +21014,7 @@ static void add_peer_mwi_subs(struct sip_peer *peer)
 }
 
 /*! \brief  Handle incoming SUBSCRIBE request */
-static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, char *e)
+static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, const char *e)
 {
        int gotdest = 0;
        int res = 0;
@@ -21333,7 +21334,7 @@ static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req,
 }
 
 /*! \brief Handle incoming REGISTER request */
-static int handle_request_register(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, char *e)
+static int handle_request_register(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, const char *e)
 {
        enum check_auth_result res;
 
@@ -21401,7 +21402,7 @@ static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct so
        int respid;
        int res = 0;
        int debug = sip_debug_test_pvt(p);
-       char *e;
+       const char *e;
        int error = 0;
 
        /* Get Method and Cseq */
@@ -25058,10 +25059,10 @@ static char *app_sipaddheader = "SIPAddHeader";
 static char *app_sipremoveheader = "SIPRemoveHeader";
 
 /*! \brief Set the DTMFmode for an outbound SIP call (application) */
-static int sip_dtmfmode(struct ast_channel *chan, void *data)
+static int sip_dtmfmode(struct ast_channel *chan, const char *data)
 {
        struct sip_pvt *p;
-       char *mode = data;
+       const char *mode = data;
 
        if (!data) {
                ast_log(LOG_WARNING, "This application requires the argument: info, inband, rfc2833\n");
@@ -25116,12 +25117,13 @@ static int sip_dtmfmode(struct ast_channel *chan, void *data)
 }
 
 /*! \brief Add a SIP header to an outbound INVITE */
-static int sip_addheader(struct ast_channel *chan, void *data)
+static int sip_addheader(struct ast_channel *chan, const char *data)
 {
        int no = 0;
        int ok = FALSE;
        char varbuf[30];
-       char *inbuf = data, *subbuf;
+       const char *inbuf = data;
+       char *subbuf;
        
        if (ast_strlen_zero(inbuf)) {
                ast_log(LOG_WARNING, "This application requires the argument: Header\n");
@@ -25155,7 +25157,7 @@ static int sip_addheader(struct ast_channel *chan, void *data)
 }
 
 /*! \brief Remove SIP headers added previously with SipAddHeader application */
-static int sip_removeheader(struct ast_channel *chan, void *data)
+static int sip_removeheader(struct ast_channel *chan, const char *data)
 {
        struct ast_var_t *newvariable;
        struct varshead *headp;
index ebea149..dbb90a5 100644 (file)
@@ -1076,7 +1076,7 @@ static int callnums = 1;
 #define SKINNY_CX_INACTIVE 4
 
 #if 0
-static char *skinny_cxmodes[] = {
+static const char * const skinny_cxmodes[] = {
        "sendonly",
        "recvonly",
        "sendrecv",
@@ -3049,7 +3049,7 @@ static char *_skinny_show_devices(int fd, int *total, struct mansession *s, cons
        return CLI_SUCCESS;
 }
 
-static char mandescr_show_devices[] =
+static const char mandescr_show_devices[] =
 "Description: Lists Skinny devices in text format with details on current status.\n"
 "Devicelist will follow as separate events, followed by a final event called\n"
 "DevicelistComplete.\n"
@@ -3194,7 +3194,7 @@ static char *_skinny_show_device(int type, int fd, struct mansession *s, const s
        return CLI_SUCCESS;
 }
 
-static char mandescr_show_device[] =
+static const char mandescr_show_device[] =
 "Description: Show one SKINNY device with details on current status.\n"
 "Variables: \n"
 "  Device: <name>           The device name you want to check.\n"
@@ -3310,7 +3310,7 @@ static char *_skinny_show_lines(int fd, int *total, struct mansession *s, const
        return CLI_SUCCESS;
 }
 
-static char mandescr_show_lines[] =
+static const char mandescr_show_lines[] =
 "Description: Lists Skinny lines in text format with details on current status.\n"
 "Linelist will follow as separate events, followed by a final event called\n"
 "LinelistComplete.\n"
@@ -3502,7 +3502,7 @@ static char *_skinny_show_line(int type, int fd, struct mansession *s, const str
        return CLI_SUCCESS;
 }
 
-static char mandescr_show_line[] =
+static const char mandescr_show_line[] =
 "Description: Show one SKINNY line with details on current status.\n"
 "Variables: \n"
 "  Line: <name>           The line name you want to check.\n"
index 95a8ce8..27e8e0c 100644 (file)
@@ -502,7 +502,7 @@ static struct unistimsession {
 
 static const unsigned char packet_rcv_discovery[] =
        { 0xff, 0xff, 0xff, 0xff, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x03, 0x08 };
-static unsigned char packet_send_discovery_ack[] =
+static const unsigned char packet_send_discovery_ack[] =
        { 0x00, 0x00, /*Initial Seq (2 bytes) */ 0x00, 0x00, 0x00, 0x01 };
 
 static const unsigned char packet_recv_firm_version[] =
@@ -733,8 +733,8 @@ static unsigned int get_tick_count(void)
 }
 
 /* Send data to a phone without retransmit nor buffering */
-static void send_raw_client(int size, unsigned char *data, struct sockaddr_in *addr_to,
-       const struct sockaddr_in *addr_ourip)
+static void send_raw_client(int size, const unsigned char *data, struct sockaddr_in *addr_to,
+                           const struct sockaddr_in *addr_ourip)
 {
 #ifdef HAVE_PKTINFO
        struct iovec msg_iov;
@@ -743,7 +743,12 @@ static void send_raw_client(int size, unsigned char *data, struct sockaddr_in *a
        struct cmsghdr *ip_msg = (struct cmsghdr *) buffer;
        struct in_pktinfo *pki = (struct in_pktinfo *) CMSG_DATA(ip_msg);
 
-       msg_iov.iov_base = data;
+       /* cast this to a non-const pointer, since the sendmsg() API
+        * does not provide read-only and write-only flavors of the
+        * structures used for its arguments, but in this case we know
+        * the data will not be modified
+        */
+       msg_iov.iov_base = (char *) data;
        msg_iov.iov_len = size;
 
        msg.msg_name = addr_to;  /* optional address */
index 21088ba..375a401 100644 (file)
@@ -1505,7 +1505,7 @@ static int kp_match_area(const struct keypad_entry *e, int x, int y)
 }
 
 struct _s_k { const char *s; int k; };
-static struct _s_k gui_key_map[] = {
+static const struct _s_k gui_key_map[] = {
        {"FREEZE",      KEY_FREEZE},
        {"PIP",         KEY_PIP},
        {"PICK_UP",     KEY_PICK_UP },
index 950fc78..f23ae50 100644 (file)
@@ -279,7 +279,7 @@ static struct iax2_ie {
        { IAX_IE_OSPTOKEN, "OSPTOKEN" },
 };
 
-static struct iax2_ie prov_ies[] = {
+static const struct iax2_ie prov_ies[] = {
        { PROV_IE_USEDHCP, "USEDHCP" },
        { PROV_IE_IPADDR, "IPADDR", dump_ipaddr },
        { PROV_IE_SUBNET, "SUBNET", dump_ipaddr },
index 40df71f..e1fe167 100644 (file)
@@ -136,7 +136,7 @@ void misdn_cfg_update_ptp( void );
 void misdn_cfg_get(int port, enum misdn_cfg_elements elem, void* buf, int bufsize);
 
 /* returns the enum element for the given name, returns MISDN_CFG_FIRST if none was found */
-enum misdn_cfg_elements misdn_cfg_get_elem (char *name);
+enum misdn_cfg_elements misdn_cfg_get_elem (const char *name);
 
 /* fills the buffer with the name of the given config element */
 void misdn_cfg_get_name (enum misdn_cfg_elements elem, void *buf, int bufsize);
index 1b645f2..70bc8a6 100644 (file)
@@ -600,7 +600,7 @@ void misdn_cfg_get(int port, enum misdn_cfg_elements elem, void *buf, int bufsiz
        misdn_cfg_unlock();
 }
 
-enum misdn_cfg_elements misdn_cfg_get_elem(char *name)
+enum misdn_cfg_elements misdn_cfg_get_elem(const char *name)
 {
        int pos;
 
index ecb7a8c..c667fdb 100644 (file)
@@ -1113,7 +1113,7 @@ struct _cm {    /* map ffmpeg codec types to asterisk formats */
        //struct video_codec_desc *codec_desc;
 };
 
-static struct _cm video_formats[] = {
+static const struct _cm video_formats[] = {
         { AST_FORMAT_H263_PLUS, CODEC_ID_H263,  CM_RD }, /* incoming H263P ? */
         { AST_FORMAT_H263_PLUS, CODEC_ID_H263P, CM_WR },
         { AST_FORMAT_H263,      CODEC_ID_H263,  CM_RD },
@@ -1137,7 +1137,7 @@ static enum CodecID map_video_format(uint32_t ast_format, int rw)
 }
 
 /* pointers to supported codecs. We assume the first one to be non null. */
-static struct video_codec_desc *supported_codecs[] = {
+static const struct video_codec_desc *supported_codecs[] = {
        &h263p_codec,
        &h264_codec,
        &h263_codec,
index 571fed8..480c63b 100644 (file)
@@ -42,7 +42,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 /* silent gsm frame */
 /* begin binary data: */
-char gsm_silence[] = /* 33 */
+static const char gsm_silence[] = /* 33 */
 {0xD8,0x20,0xA2,0xE1,0x5A,0x50,0x00,0x49,0x24,0x92,0x49,0x24,0x50,0x00,0x49
 ,0x24,0x92,0x49,0x24,0x50,0x00,0x49,0x24,0x92,0x49,0x24,0x50,0x00,0x49,0x24
 ,0x92,0x49,0x24};
index a256388..6e4a674 100644 (file)
@@ -255,8 +255,8 @@ static char *handle_cli_devstate_change(struct ast_cli_entry *e, int cmd, struct
                return NULL;
        case CLI_GENERATE:
        {
-               static char * const cmds[] = { "UNKNOWN", "NOT_INUSE", "INUSE", "BUSY",
-                       "UNAVAILABLE", "RINGING", "RINGINUSE", "ONHOLD", NULL };
+               static const char * const cmds[] = { "UNKNOWN", "NOT_INUSE", "INUSE", "BUSY",
+                                                    "UNAVAILABLE", "RINGING", "RINGINUSE", "ONHOLD", NULL };
 
                if (a->pos == e->args + 1)
                        return ast_cli_complete(a->word, cmds, a->n);
index 4bfe1a2..85fdd09 100644 (file)
@@ -732,7 +732,7 @@ static struct ast_custom_function fetch_function = {
 
 static char *app_odbcfinish = "ODBCFinish";
 
-static int exec_odbcfinish(struct ast_channel *chan, void *data)
+static int exec_odbcfinish(struct ast_channel *chan, const char *data)
 {
        struct ast_datastore *store = ast_channel_datastore_find(chan, &odbc_info, data);
        if (!store) /* Already freed; no big deal. */
index a2ba285..b4f29b1 100644 (file)
@@ -654,7 +654,7 @@ static void clearvar_prefix(struct ast_channel *chan, const char *prefix)
        AST_LIST_TRAVERSE_SAFE_END
 }
 
-static int exec_clearhash(struct ast_channel *chan, void *data)
+static int exec_clearhash(struct ast_channel *chan, const char *data)
 {
        char prefix[80];
        snprintf(prefix, sizeof(prefix), HASH_PREFIX, data ? (char *)data : "null");
index d884ce3..1e9508b 100644 (file)
@@ -84,7 +84,7 @@ struct ast_jb
        /*! \brief Jitterbuffer configuration. */
        struct ast_jb_conf conf;
        /*! \brief Jitterbuffer implementation to be used. */
-       struct ast_jb_impl *impl;
+       const struct ast_jb_impl *impl;
        /*! \brief Jitterbuffer object, passed to the implementation. */
        void *jbobj;
        /*! \brief The time the jitterbuffer was created. */
index 9c77595..9df9afe 100644 (file)
@@ -39,22 +39,22 @@ typedef struct agi_state {
 } AGI;
 
 typedef struct agi_command {
-       char *cmda[AST_MAX_CMD_LEN];            /*!< Null terminated list of the words of the command */
+       const char * const cmda[AST_MAX_CMD_LEN];               /*!< Null terminated list of the words of the command */
        /*! Handler for the command (channel, AGI state, # of arguments, argument list). 
            Returns RESULT_SHOWUSAGE for improper arguments */
-       int (*handler)(struct ast_channel *chan, AGI *agi, int argc, char *argv[]);
+       int (* const handler)(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[]);
        /*! Summary of the command (< 60 characters) */
-       char *summary;
+       const char * const summary;
        /*! Detailed usage information */
-       char *usage;
+       const char * const usage;
        /*! Does this application run dead */
-       int dead;
+       const int dead;
        /*! AGI command syntax description */
-       char *syntax;
+       const char * const syntax;
        /*! See also content */
-       char *seealso;
+       const char * const seealso;
        /*! Where the documentation come from. */
-       enum ast_doc_src docsrc;
+       const enum ast_doc_src docsrc;
        /*! Pointer to module that registered the agi command */
        struct ast_module *mod;
        /*! Linked list pointer */
index 8e0d869..d442e52 100644 (file)
@@ -106,7 +106,7 @@ int ast_ivr_menu_run(struct ast_channel *c, struct ast_ivr_menu *menu, void *cbd
 int ast_app_getdata(struct ast_channel *c, const char *prompt, char *s, int maxlen, int timeout);
 
 /*! \brief Full version with audiofd and controlfd.  NOTE: returns '2' on ctrlfd available, not '1' like other full functions */
-int ast_app_getdata_full(struct ast_channel *c, char *prompt, char *s, int maxlen, int timeout, int audiofd, int ctrlfd);
+int ast_app_getdata_full(struct ast_channel *c, const char *prompt, char *s, int maxlen, int timeout, int audiofd, int ctrlfd);
 
 /*!
  * \brief Set voicemail function callbacks
index a02764d..f03a39f 100644 (file)
@@ -97,7 +97,7 @@ void ast_cli(int fd, const char *fmt, ...)
 \code
 static char *test_new_cli(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       static char *choices = { "one", "two", "three", NULL };
+       static const char * const choices = { "one", "two", "three", NULL };
 
         switch (cmd) {
         case CLI_INIT:
@@ -128,7 +128,7 @@ static char *test_new_cli(struct ast_cli_entry *e, int cmd, struct ast_cli_args
 /*! \brief calling arguments for new-style handlers. 
 * \arg \ref CLI_command_API
 */
-enum ast_cli_fn {
+enum ast_cli_command {
        CLI_INIT = -2,          /* return the usage string */
        CLI_GENERATE = -3,      /* behave as 'generator', remap argv to struct ast_cli_args */
        CLI_HANDLER = -4,       /* run the normal handler */
@@ -136,27 +136,25 @@ enum ast_cli_fn {
 
 /* argument for new-style CLI handler */
 struct ast_cli_args {
-       int fd;
-       int argc;
-       char **argv;
+       const int fd;
+       const int argc;
+       const char * const *argv;
        const char *line;       /* the current input line */
        const char *word;       /* the word we want to complete */
-       int pos;                /* position of the word to complete */
-       int n;                  /* the iteration count (n-th entry we generate) */
+       const int pos;          /* position of the word to complete */
+       const int n;            /* the iteration count (n-th entry we generate) */
 };
 
-struct ast_cli_entry;
-typedef char *(*cli_fn)(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
-
 /*! \brief descriptor for a cli entry. 
  * \arg \ref CLI_command_API
  */
 struct ast_cli_entry {
-       char * const cmda[AST_MAX_CMD_LEN];     /*!< words making up the command.
-                                               * set the first entry to NULL for a new-style entry. */
+       const char * const cmda[AST_MAX_CMD_LEN];       /*!< words making up the command.
+                                                        * set the first entry to NULL for a new-style entry.
+                                                        */
 
-       const char *summary;                    /*!< Summary of the command (< 60 characters) */
-       const char *usage;                      /*!< Detailed usage information */
+       const char * const summary;                     /*!< Summary of the command (< 60 characters) */
+       const char * usage;                             /*!< Detailed usage information */
 
        int inuse;                              /*!< For keeping track of usage */
        struct module *module;                  /*!< module this belongs to */
@@ -166,7 +164,7 @@ struct ast_cli_entry {
         */
        int args;                               /*!< number of non-null entries in cmda */
        char *command;                          /*!< command, non-null for new-style entries */
-       cli_fn handler;
+       char *(*handler)(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
        /*! For linking */
        AST_LIST_ENTRY(ast_cli_entry) list;
 };
@@ -183,7 +181,7 @@ struct ast_cli_entry {
   \code
     char *my_generate(const char *line, const char *word, int pos, int n)
     {
-        static char *choices = { "one", "two", "three", NULL };
+        static const char * const choices = { "one", "two", "three", NULL };
        if (pos == 2)
                return ast_cli_complete(word, choices, n);
        else
@@ -191,7 +189,7 @@ struct ast_cli_entry {
     }
   \endcode
  */
-char *ast_cli_complete(const char *word, char *const choices[], int pos);
+char *ast_cli_complete(const char *word, const char * const choices[], int pos);
 
 /*! 
  * \brief Interprets a command
index eeccc7b..3aa1578 100644 (file)
@@ -185,7 +185,7 @@ int localized_pbx_load_module(void);
  * \version 1.6.1 renamed function from localized_context_create to localized_context_find_or_create
  */
 struct ast_context *localized_context_find_or_create(struct ast_context **extcontexts, void *tab, const char *name, const char *registrar);
-int localized_pbx_builtin_setvar(struct ast_channel *chan, void *data);
+int localized_pbx_builtin_setvar(struct ast_channel *chan, const void *data);
 int localized_context_add_ignorepat2(struct ast_context *con, const char *value, const char *registrar);
 int localized_context_add_switch2(struct ast_context *con, const char *value,
                                                                 const char *data, int eval, const char *registrar);
index 9a666c7..a660b9e 100644 (file)
@@ -49,7 +49,7 @@
 #define FEATURE_SENSE_CHAN     (1 << 0)
 #define FEATURE_SENSE_PEER     (1 << 1)
 
-typedef int (*ast_feature_operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data);
+typedef int (*ast_feature_operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data);
 
 /*! \brief main call feature structure */
 
@@ -136,7 +136,7 @@ void ast_unregister_feature(struct ast_call_feature *feature);
     \param char ptr of input code
     \retval ast_call_feature ptr to be set if found 
     \return result, was feature found or not */
-int ast_feature_detect(struct ast_channel *chan, struct ast_flags *features, char *code, struct ast_call_feature *feature);
+int ast_feature_detect(struct ast_channel *chan, struct ast_flags *features, const char *code, struct ast_call_feature *feature);
 
 /*! \brief look for a call feature entry by its sname
        \param name a string ptr, should match "automon", "blindxfer", "atxfer", etc. */
index cfe5119..a3e2e01 100644 (file)
@@ -51,7 +51,7 @@ int ast_supports_images(struct ast_channel *chan);
  * \retval 0 on success
  * \retval -1 on error
  */
-int ast_send_image(struct ast_channel *chan, char *filename);
+int ast_send_image(struct ast_channel *chan, const char *filename);
 
 /*! 
  * \brief Make an image 
@@ -62,7 +62,7 @@ int ast_send_image(struct ast_channel *chan, char *filename);
  * \retval an ast_frame on success
  * \retval NULL on failure
  */
-struct ast_frame *ast_read_image(char *filename, const char *preflang, int format);
+struct ast_frame *ast_read_image(const char *filename, const char *preflang, int format);
 
 /*! 
  * \brief Register image format
index c952db4..3ffe0b7 100644 (file)
@@ -415,7 +415,7 @@ static void __restore_globals(void)
  * \retval 0 success
  * \retval -1 failure.
  */
-int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *),
+int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, const char *),
                                     const char *synopsis, const char *description, void *mod);
 
 /*! 
index 95a23f8..c2f999e 100644 (file)
@@ -210,7 +210,7 @@ struct ast_app *pbx_findapp(const char *app);
  * \retval 0 success
  * \retval -1 failure
  */
-int pbx_exec(struct ast_channel *c, struct ast_app *app, void *data);
+int pbx_exec(struct ast_channel *c, struct ast_app *app, const char *data);
 
 /*!
  * \brief Register a new context or find an existing one
@@ -976,14 +976,14 @@ void pbx_builtin_clear_globals(void);
 /*!\brief Parse and set a single channel variable, where the name and value are separated with an '=' character.
  * \note Will lock the channel.
  */
-int pbx_builtin_setvar(struct ast_channel *chan, void *data);
+int pbx_builtin_setvar(struct ast_channel *chan, const char *data);
 
 /*!\brief Parse and set multiple channel variables, where the pairs are separated by the ',' character, and name and value are separated with an '=' character.
  * \note Will lock the channel.
  */
-int pbx_builtin_setvar_multiple(struct ast_channel *chan, void *data);
+int pbx_builtin_setvar_multiple(struct ast_channel *chan, const char *data);
 
-int pbx_builtin_raise_exception(struct ast_channel *chan, void *data);
+int pbx_builtin_raise_exception(struct ast_channel *chan, const char *data);
 
 /*! @name Substitution routines, using static string buffers
  * @{ */
index 54e9c69..cb167d5 100644 (file)
@@ -78,13 +78,13 @@ struct ast_speech_engine {
        /*! Destroy any data set on the speech structure by the engine */
        int (*destroy)(struct ast_speech *speech);
        /*! Load a local grammar on the speech structure */
-       int (*load)(struct ast_speech *speech, char *grammar_name, char *grammar);
+       int (*load)(struct ast_speech *speech, const char *grammar_name, const char *grammar);
        /*! Unload a local grammar */
-       int (*unload)(struct ast_speech *speech, char *grammar_name);
+       int (*unload)(struct ast_speech *speech, const char *grammar_name);
        /*! Activate a loaded grammar */
-       int (*activate)(struct ast_speech *speech, char *grammar_name);
+       int (*activate)(struct ast_speech *speech, const char *grammar_name);
        /*! Deactivate a loaded grammar */
-       int (*deactivate)(struct ast_speech *speech, char *grammar_name);
+       int (*deactivate)(struct ast_speech *speech, const char *grammar_name);
        /*! Write audio to the speech engine */
        int (*write)(struct ast_speech *speech, void *data, int len);
        /*! Signal DTMF was received */
@@ -92,7 +92,7 @@ struct ast_speech_engine {
        /*! Prepare engine to accept audio */
        int (*start)(struct ast_speech *speech);
        /*! Change an engine specific setting */
-       int (*change)(struct ast_speech *speech, char *name, const char *value);
+       int (*change)(struct ast_speech *speech, const char *name, const char *value);
        /*! Change the type of results we want back */
        int (*change_results_type)(struct ast_speech *speech, enum ast_speech_results_type results_type);
        /*! Try to get results */
@@ -117,13 +117,13 @@ struct ast_speech_result {
 };
 
 /*! \brief Activate a grammar on a speech structure */
-int ast_speech_grammar_activate(struct ast_speech *speech, char *grammar_name);
+int ast_speech_grammar_activate(struct ast_speech *speech, const char *grammar_name);
 /*! \brief Deactivate a grammar on a speech structure */
-int ast_speech_grammar_deactivate(struct ast_speech *speech, char *grammar_name);
+int ast_speech_grammar_deactivate(struct ast_speech *speech, const char *grammar_name);
 /*! \brief Load a grammar on a speech structure (not globally) */
-int ast_speech_grammar_load(struct ast_speech *speech, char *grammar_name, char *grammar);
+int ast_speech_grammar_load(struct ast_speech *speech, const char *grammar_name, const char *grammar);
 /*! \brief Unload a grammar */
-int ast_speech_grammar_unload(struct ast_speech *speech, char *grammar_name);
+int ast_speech_grammar_unload(struct ast_speech *speech, const char *grammar_name);
 /*! \brief Get speech recognition results */
 struct ast_speech_result *ast_speech_results_get(struct ast_speech *speech);
 /*! \brief Free a set of results */
@@ -131,7 +131,7 @@ int ast_speech_results_free(struct ast_speech_result *result);
 /*! \brief Indicate to the speech engine that audio is now going to start being written */
 void ast_speech_start(struct ast_speech *speech);
 /*! \brief Create a new speech structure */
-struct ast_speech *ast_speech_new(char *engine_name, int formats);
+struct ast_speech *ast_speech_new(const char *engine_name, int formats);
 /*! \brief Destroy a speech structure */
 int ast_speech_destroy(struct ast_speech *speech);
 /*! \brief Write audio to the speech engine */
@@ -139,7 +139,7 @@ int ast_speech_write(struct ast_speech *speech, void *data, int len);
 /*! \brief Signal to the engine that DTMF was received */
 int ast_speech_dtmf(struct ast_speech *speech, const char *dtmf);
 /*! \brief Change an engine specific attribute */
-int ast_speech_change(struct ast_speech *speech, char *name, const char *value);
+int ast_speech_change(struct ast_speech *speech, const char *name, const char *value);
 /*! \brief Change the type of results we want */
 int ast_speech_change_results_type(struct ast_speech *speech, enum ast_speech_results_type results_type);
 /*! \brief Change state of a speech structure */
@@ -147,7 +147,7 @@ int ast_speech_change_state(struct ast_speech *speech, int state);
 /*! \brief Register a speech recognition engine */
 int ast_speech_register(struct ast_speech_engine *engine);
 /*! \brief Unregister a speech recognition engine */
-int ast_speech_unregister(char *engine_name);
+int ast_speech_unregister(const char *engine_name);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
index 43ba361..ae58af3 100644 (file)
@@ -281,7 +281,7 @@ int attribute_pure ast_false(const char *val);
  * string.  It will also place a space in the result buffer in between each
  * string from 'w'.
 */
-void ast_join(char *s, size_t len, char * const w[]);
+void ast_join(char *s, size_t len, const char * const w[]);
 
 /*
   \brief Parse a time (integer) string.
@@ -454,7 +454,7 @@ void ast_str_trim_blanks(struct ast_str *buf),
  * \param buf A pointer to the ast_str structure.
  */
 AST_INLINE_API(
-size_t attribute_pure ast_str_strlen(struct ast_str *buf),
+size_t attribute_pure ast_str_strlen(const struct ast_str *buf),
 {
        return buf->__AST_STR_USED;
 }
@@ -465,7 +465,7 @@ size_t attribute_pure ast_str_strlen(struct ast_str *buf),
  * \retval Current maximum length of the buffer.
  */
 AST_INLINE_API(
-size_t attribute_pure ast_str_size(struct ast_str *buf),
+size_t attribute_pure ast_str_size(const struct ast_str *buf),
 {
        return buf->__AST_STR_LEN;
 }
@@ -476,9 +476,13 @@ size_t attribute_pure ast_str_size(struct ast_str *buf),
  * \retval A pointer to the enclosed string.
  */
 AST_INLINE_API(
-char * attribute_pure ast_str_buffer(struct ast_str *buf),
+char * attribute_pure ast_str_buffer(const struct ast_str *buf),
 {
-       return buf->__AST_STR_STR;
+       /* for now, cast away the const qualifier on the pointer
+        * being returned; eventually, it should become truly const
+        * and only be modified via accessor functions
+        */
+       return (char *) buf->__AST_STR_STR;
 }
 )
 
index 6929b8f..aa37477 100644 (file)
@@ -73,7 +73,7 @@ enum ast_tps_options {
  * TPS_REF_IF_EXISTS reference type is specified and the taskprocessor does not exist
  * \since 1.6.1
  */
-struct ast_taskprocessor *ast_taskprocessor_get(char *name, enum ast_tps_options create);
+struct ast_taskprocessor *ast_taskprocessor_get(const char *name, enum ast_tps_options create);
 
 /*! \brief Unreference the specified taskprocessor and its reference count will decrement.
  *
index aac5a46..cd1c7fa 100644 (file)
@@ -215,9 +215,9 @@ struct ast_hostent {
 struct hostent *ast_gethostbyname(const char *host, struct ast_hostent *hp);
 
 /*!  \brief Produces MD5 hash based on input string */
-void ast_md5_hash(char *output, char *input);
+void ast_md5_hash(char *output, const char *input);
 /*! \brief Produces SHA1 hash based on input string */
-void ast_sha1_hash(char *output, char *input);
+void ast_sha1_hash(char *output, const char *input);
 
 int ast_base64encode_full(char *dst, const unsigned char *src, int srclen, int max, int linebreaks);
 
index d7ff735..cda9a6d 100644 (file)
@@ -110,8 +110,7 @@ static void jb_force_resynch_adaptive(void *jb);
 static void jb_empty_and_reset_adaptive(void *jb);
 
 /* Available jb implementations */
-static struct ast_jb_impl avail_impl[] =
-{
+static const struct ast_jb_impl avail_impl[] = {
        {
                .name = "fixed",
                .create = jb_create_fixed,
@@ -150,13 +149,13 @@ enum {
 };
 
 /* Translations between impl and abstract return codes */
-static int fixed_to_abstract_code[] =
+static const int fixed_to_abstract_code[] =
        {JB_IMPL_OK, JB_IMPL_DROP, JB_IMPL_INTERP, JB_IMPL_NOFRAME};
-static int adaptive_to_abstract_code[] =
+static const int adaptive_to_abstract_code[] =
        {JB_IMPL_OK, JB_IMPL_NOFRAME, JB_IMPL_NOFRAME, JB_IMPL_INTERP, JB_IMPL_DROP, JB_IMPL_OK};
 
 /* JB_GET actions (used only for the frames log) */
-static char *jb_get_actions[] = {"Delivered", "Dropped", "Interpolated", "No"};
+static const char * const jb_get_actions[] = {"Delivered", "Dropped", "Interpolated", "No"};
 
 /*! \brief Macros for the frame log files */
 #define jb_framelog(...) do { \
@@ -181,7 +180,7 @@ static void jb_choose_impl(struct ast_channel *chan)
 {
        struct ast_jb *jb = &chan->jb;
        struct ast_jb_conf *jbconf = &jb->conf;
-       struct ast_jb_impl *test_impl;
+       const struct ast_jb_impl *test_impl;
        int i, avail_impl_count = ARRAY_LEN(avail_impl);
 
        jb->impl = &avail_impl[default_impl];
@@ -303,7 +302,7 @@ int ast_jb_get_when_to_wakeup(struct ast_channel *c0, struct ast_channel *c1, in
 int ast_jb_put(struct ast_channel *chan, struct ast_frame *f)
 {
        struct ast_jb *jb = &chan->jb;
-       struct ast_jb_impl *jbimpl = jb->impl;
+       const struct ast_jb_impl *jbimpl = jb->impl;
        void *jbobj = jb->jbobj;
        struct ast_frame *frr;
        long now = 0;
@@ -385,7 +384,7 @@ void ast_jb_get_and_deliver(struct ast_channel *c0, struct ast_channel *c1)
 static void jb_get_and_deliver(struct ast_channel *chan)
 {
        struct ast_jb *jb = &chan->jb;
-       struct ast_jb_impl *jbimpl = jb->impl;
+       const struct ast_jb_impl *jbimpl = jb->impl;
        void *jbobj = jb->jbobj;
        struct ast_frame *f, finterp;
        long now;
@@ -450,7 +449,7 @@ static int create_jb(struct ast_channel *chan, struct ast_frame *frr)
 {
        struct ast_jb *jb = &chan->jb;
        struct ast_jb_conf *jbconf = &jb->conf;
-       struct ast_jb_impl *jbimpl = jb->impl;
+       const struct ast_jb_impl *jbimpl = jb->impl;
        void *jbobj;
        struct ast_channel *bridged;
        long now;
@@ -534,7 +533,7 @@ static int create_jb(struct ast_channel *chan, struct ast_frame *frr)
 void ast_jb_destroy(struct ast_channel *chan)
 {
        struct ast_jb *jb = &chan->jb;
-       struct ast_jb_impl *jbimpl = jb->impl;
+       const struct ast_jb_impl *jbimpl = jb->impl;
        void *jbobj = jb->jbobj;
        struct ast_frame *f;
 
index 8e28b0c..72af3e0 100644 (file)
@@ -180,7 +180,7 @@ enum ast_getdata_result ast_app_getdata(struct ast_channel *c, const char *promp
 /* The lock type used by ast_lock_path() / ast_unlock_path() */
 static enum AST_LOCK_TYPE ast_lock_type = AST_LOCK_TYPE_LOCKFILE;
 
-int ast_app_getdata_full(struct ast_channel *c, char *prompt, char *s, int maxlen, int timeout, int audiofd, int ctrlfd)
+int ast_app_getdata_full(struct ast_channel *c, const char *prompt, char *s, int maxlen, int timeout, int audiofd, int ctrlfd)
 {
        int res, to = 2000, fto = 6000;
 
@@ -949,8 +949,8 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
        return res;
 }
 
-static char default_acceptdtmf[] = "#";
-static char default_canceldtmf[] = "";
+static const char default_acceptdtmf[] = "#";
+static const char default_canceldtmf[] = "";
 
 int ast_play_and_record_full(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime, const char *fmt, int *duration, int silencethreshold, int maxsilence, const char *path, const char *acceptdtmf, const char *canceldtmf)
 {
index 4997068..98d2ea5 100644 (file)
@@ -313,7 +313,7 @@ void  ast_expr_clear_extra_error_info(void)
        extra_error_message[0] = 0;
 }
 
-static char *expr2_token_equivs1[] = 
+static const char * const expr2_token_equivs1[] = 
 {
        "TOKEN",
        "TOK_COND",
@@ -339,7 +339,7 @@ static char *expr2_token_equivs1[] =
        "TOK_LP"
 };
 
-static char *expr2_token_equivs2[] = 
+static const char * const expr2_token_equivs2[] = 
 {
        "<token>",
        "?",
index 744ed29..c45f6d8 100644 (file)
@@ -765,7 +765,7 @@ int64_t ast_mark(int i, int startstop)
 static char *handle_show_profile(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        int i, min, max;
-       char *search = NULL;
+       const char *search = NULL;
        switch (cmd) {
        case CLI_INIT:
                e->command = "core show profile";
@@ -800,7 +800,7 @@ static char *handle_show_profile(struct ast_cli_entry *e, int cmd, struct ast_cl
 static char *handle_clear_profile(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        int i, min, max;
-       char *search = NULL;
+       const char *search = NULL;
        switch (cmd) {
        case CLI_INIT:
                e->command = "core clear profile";
index 78c4cc0..13e0c54 100644 (file)
@@ -927,10 +927,10 @@ static void container_destruct_debug(void *_c)
 #ifdef AO2_DEBUG
 static int print_cb(void *obj, void *arg, int flag)
 {
-       int *fd = arg;
+       struct ast_cli_args *a = (struct ast_cli_args *) arg;
        char *s = (char *)obj;
 
-       ast_cli(*fd, "string <%s>\n", s);
+       ast_cli(a->fd, "string <%s>\n", s);
        return 0;
 }
 
@@ -1017,7 +1017,7 @@ static char *handle_astobj2_test(struct ast_cli_entry *e, int cmd, struct ast_cl
                ao2_t_ref(obj, -1, "test");
        }
        ast_cli(a->fd, "testing callbacks\n");
-       ao2_t_callback(c1, 0, print_cb, &a->fd, "test callback");
+       ao2_t_callback(c1, 0, print_cb, a, "test callback");
        ast_cli(a->fd, "testing iterators, remove every second object\n");
        {
                struct ao2_iterator ai;
@@ -1038,7 +1038,7 @@ static char *handle_astobj2_test(struct ast_cli_entry *e, int cmd, struct ast_cl
                }
        }
        ast_cli(a->fd, "testing callbacks again\n");
-       ao2_t_callback(c1, 0, print_cb, &a->fd, "test callback");
+       ao2_t_callback(c1, 0, print_cb, a, "test callback");
 
        ast_verbose("now you should see an error message:\n");
        ao2_t_ref(&i, -1, "");  /* i is not a valid object so we print an error here */
index 65c4e3e..169625f 100644 (file)
@@ -282,10 +282,10 @@ void ast_cdr_getvar(struct ast_cdr *cdr, const char *name, char **ret, char *wor
 }
 
 /* readonly cdr variables */
-static const char *cdr_readonly_vars[] = { "clid", "src", "dst", "dcontext", "channel", "dstchannel",
-                                   "lastapp", "lastdata", "start", "answer", "end", "duration",
-                                   "billsec", "disposition", "amaflags", "accountcode", "uniqueid",
-                                   "userfield", NULL };
+static const char * const cdr_readonly_vars[] = { "clid", "src", "dst", "dcontext", "channel", "dstchannel",
+                                                 "lastapp", "lastdata", "start", "answer", "end", "duration",
+                                                 "billsec", "disposition", "amaflags", "accountcode", "uniqueid",
+                                                 "userfield", NULL };
 /*! Set a CDR channel variable 
        \note You can't set the CDR variables that belong to the actual CDR record, like "billsec".
 */
index 91bc886..969c0cf 100644 (file)
@@ -3541,7 +3541,7 @@ int ast_senddigit_begin(struct ast_channel *chan, char digit)
 {
        /* Device does not support DTMF tones, lets fake
         * it by doing our own generation. */
-       static const char* dtmf_tones[] = {
+       static const char * const dtmf_tones[] = {
                "941+1336", /* 0 */
                "697+1209", /* 1 */
                "697+1336", /* 2 */
index 8217e52..136d56a 100644 (file)
@@ -365,13 +365,13 @@ static char *handle_verbose(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
        int atleast = 0;
        int fd = a->fd;
        int argc = a->argc;
-       char **argv = a->argv;
-       char *argv3 = a->argv ? S_OR(a->argv[3], "") : "";
+       const char * const *argv = a->argv;
+       const char *argv3 = a->argv ? S_OR(a->argv[3], "") : "";
        int *dst;
        char *what;
        struct debug_file_list *dfl;
        struct ast_debug_file *adf;
-       char *fn;
+       const char *fn;
 
        switch (cmd) {
        case CLI_INIT:
@@ -387,7 +387,7 @@ static char *handle_verbose(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
 
        case CLI_GENERATE:
                if (a->pos == 3 || (a->pos == 4 && !strcasecmp(a->argv[3], "atleast"))) {
-                       char *pos = a->pos == 3 ? argv3 : S_OR(a->argv[4], "");
+                       const char *pos = a->pos == 3 ? argv3 : S_OR(a->argv[4], "");
                        int numbermatch = (ast_strlen_zero(pos) || strchr("123456789", pos[0])) ? 0 : 21;
                        if (a->n < 21 && numbermatch == 0) {
                                return complete_number(pos, 0, 0x7fffffff, a->n);
@@ -534,7 +534,7 @@ static char *handle_unload(struct ast_cli_entry *e, int cmd, struct ast_cli_args
        /* "module unload mod_1 [mod_2 .. mod_N]" */
        int x;
        int force = AST_FORCE_SOFT;
-       char *s;
+       const char *s;
 
        switch (cmd) {
        case CLI_INIT:
@@ -685,7 +685,7 @@ static char * handle_showuptime(struct ast_cli_entry *e, int cmd, struct ast_cli
 
 static char *handle_modlist(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char *like;
+       const char *like;
 
        switch (cmd) {
        case CLI_INIT:
@@ -787,8 +787,6 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
 
        struct ast_channel *c = NULL;
        int numchans = 0, concise = 0, verbose = 0, count = 0;
-       int fd, argc;
-       char **argv;
        struct ast_channel_iterator *iter = NULL;
 
        switch (cmd) {
@@ -808,16 +806,13 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
        case CLI_GENERATE:
                return NULL;
        }
-       fd = a->fd;
-       argc = a->argc;
-       argv = a->argv;
 
        if (a->argc == e->args) {
-               if (!strcasecmp(argv[e->args-1],"concise"))
+               if (!strcasecmp(a->argv[e->args-1],"concise"))
                        concise = 1;
-               else if (!strcasecmp(argv[e->args-1],"verbose"))
+               else if (!strcasecmp(a->argv[e->args-1],"verbose"))
                        verbose = 1;
-               else if (!strcasecmp(argv[e->args-1],"count"))
+               else if (!strcasecmp(a->argv[e->args-1],"count"))
                        count = 1;
                else
                        return CLI_SHOWUSAGE;
@@ -826,9 +821,9 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
 
        if (!count) {
                if (!concise && !verbose)
-                       ast_cli(fd, FORMAT_STRING2, "Channel", "Location", "State", "Application(Data)");
+                       ast_cli(a->fd, FORMAT_STRING2, "Channel", "Location", "State", "Application(Data)");
                else if (verbose)
-                       ast_cli(fd, VERBOSE_FORMAT_STRING2, "Channel", "Context", "Extension", "Priority", "State", "Application", "Data", 
+                       ast_cli(a->fd, VERBOSE_FORMAT_STRING2, "Channel", "Context", "Extension", "Priority", "State", "Application", "Data", 
                                "CallerID", "Duration", "Accountcode", "BridgedTo");
        }
 
@@ -857,7 +852,7 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
                                }                               
                        }
                        if (concise) {
-                               ast_cli(fd, CONCISE_FORMAT_STRING, c->name, c->context, c->exten, c->priority, ast_state2str(c->_state),
+                               ast_cli(a->fd, CONCISE_FORMAT_STRING, c->name, c->context, c->exten, c->priority, ast_state2str(c->_state),
                                        c->appl ? c->appl : "(None)",
                                        S_OR(c->data, ""),      /* XXX different from verbose ? */
                                        S_OR(c->cid.cid_num, ""),
@@ -867,7 +862,7 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
                                        bc ? bc->name : "(None)",
                                        c->uniqueid);
                        } else if (verbose) {
-                               ast_cli(fd, VERBOSE_FORMAT_STRING, c->name, c->context, c->exten, c->priority, ast_state2str(c->_state),
+                               ast_cli(a->fd, VERBOSE_FORMAT_STRING, c->name, c->context, c->exten, c->priority, ast_state2str(c->_state),
                                        c->appl ? c->appl : "(None)",
                                        c->data ? S_OR(c->data, "(Empty)" ): "(None)",
                                        S_OR(c->cid.cid_num, ""),
@@ -882,7 +877,7 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
                                        snprintf(locbuf, sizeof(locbuf), "%s@%s:%d", c->exten, c->context, c->priority);
                                if (c->appl)
                                        snprintf(appdata, sizeof(appdata), "%s(%s)", c->appl, S_OR(c->data, ""));
-                               ast_cli(fd, FORMAT_STRING, c->name, locbuf, ast_state2str(c->_state), appdata);
+                               ast_cli(a->fd, FORMAT_STRING, c->name, locbuf, ast_state2str(c->_state), appdata);
                        }
                }
                ast_channel_unlock(c);
@@ -894,15 +889,15 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
 
        if (!concise) {
                numchans = ast_active_channels();
-               ast_cli(fd, "%d active channel%s\n", numchans, ESS(numchans));
+               ast_cli(a->fd, "%d active channel%s\n", numchans, ESS(numchans));
                if (option_maxcalls)
-                       ast_cli(fd, "%d of %d max active call%s (%5.2f%% of capacity)\n",
+                       ast_cli(a->fd, "%d of %d max active call%s (%5.2f%% of capacity)\n",
                                ast_active_calls(), option_maxcalls, ESS(ast_active_calls()),
                                ((double)ast_active_calls() / (double)option_maxcalls) * 100.0);
                else
-                       ast_cli(fd, "%d active call%s\n", ast_active_calls(), ESS(ast_active_calls()));
+                       ast_cli(a->fd, "%d active call%s\n", ast_active_calls(), ESS(ast_active_calls()));
 
-               ast_cli(fd, "%d call%s processed\n", ast_processed_calls(), ESS(ast_processed_calls()));
+               ast_cli(a->fd, "%d call%s processed\n", ast_processed_calls(), ESS(ast_processed_calls()));
        }
 
        return CLI_SUCCESS;
@@ -1238,7 +1233,6 @@ static char *handle_core_set_debug_channel(struct ast_cli_entry *e, int cmd, str
                        "Usage: core set debug channel <all|channel> [off]\n"
                        "       Enables/disables debugging on all or on a specific channel.\n";
                return NULL;
-
        case CLI_GENERATE:
                /* XXX remember to handle the optional "off" */
                if (a->pos != e->args)
@@ -1246,8 +1240,11 @@ static char *handle_core_set_debug_channel(struct ast_cli_entry *e, int cmd, str
                return a->n == 0 ? ast_strdup("all") : ast_complete_channels(a->line, a->word, a->pos, a->n - 1, e->args);
        }
 
-       /* 'core set debug channel {all|chan_id}' */
-       if (a->argc == e->args + 2) {
+       if (cmd == (CLI_HANDLER + 1000)) {
+               /* called from handle_nodebugchan_deprecated */
+               args.is_off = 1;
+       } else if (a->argc == e->args + 2) {
+               /* 'core set debug channel {all|chan_id}' */
                if (!strcasecmp(a->argv[e->args + 1], "off"))
                        args.is_off = 1;
                else
@@ -1282,18 +1279,27 @@ static char *handle_core_set_debug_channel(struct ast_cli_entry *e, int cmd, str
 static char *handle_nodebugchan_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        char *res;
-       if (cmd == CLI_HANDLER) {
-               if (a->argc != e->args + 1)
-                       return CLI_SHOWUSAGE;
-               /* pretend we have an extra "off" at the end. We can do this as the array
-                * is NULL terminated so we overwrite that entry.
-                */
-               a->argv[e->args+1] = "off";
-               a->argc++;
-       }
-       res = handle_core_set_debug_channel(e, cmd, a);
-       if (cmd == CLI_INIT)
+
+       switch (cmd) {
+       case CLI_INIT:
                e->command = "no debug channel";
+               return NULL;
+       case CLI_HANDLER:
+               /* exit out of switch statement */
+               break;
+       default:
+               return NULL;
+       }
+
+       if (a->argc != e->args + 1)
+               return CLI_SHOWUSAGE;
+
+       /* add a 'magic' value to the CLI_HANDLER command so that
+        * handle_core_set_debug_channel() will act as if 'off'
+        * had been specified as part of the command
+        */
+       res = handle_core_set_debug_channel(e, CLI_HANDLER + 1000, a);
+
        return res;
 }
                
@@ -1421,7 +1427,7 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
  * helper function to generate CLI matches from a fixed set of values.
  * A NULL word is acceptable.
  */
-char *ast_cli_complete(const char *word, char *const choices[], int state)
+char *ast_cli_complete(const char *word, const char * const choices[], int state)
 {
        int i, which = 0, len;
        len = ast_strlen_zero(word) ? 0 : strlen(word);
@@ -1823,15 +1829,15 @@ static char *is_prefix(const char *word, const char *token,
  *      1       true only on complete, exact match.
  *
  */
-static struct ast_cli_entry *find_cli(char *const cmds[], int match_type)
+static struct ast_cli_entry *find_cli(const char * const cmds[], int match_type)
 {
        int matchlen = -1;      /* length of longest match so far */
        struct ast_cli_entry *cand = NULL, *e=NULL;
 
        while ( (e = cli_next(e)) ) {
                /* word-by word regexp comparison */
-               char * const *src = cmds;
-               char * const *dst = e->cmda;
+               const char * const *src = cmds;
+               const char * const *dst = e->cmda;
                int n = 0;
                for (;; dst++, src += n) {
                        n = word_match(*src, *dst);
@@ -1867,16 +1873,15 @@ static struct ast_cli_entry *find_cli(char *const cmds[], int match_type)
        return e ? e : cand;
 }
 
-static char *find_best(char *argv[])
+static char *find_best(const char *argv[])
 {
        static char cmdline[80];
        int x;
        /* See how close we get, then print the candidate */
-       char *myargv[AST_MAX_CMD_LEN];
-       for (x=0;x<AST_MAX_CMD_LEN;x++)
-               myargv[x]=NULL;
+       const char *myargv[AST_MAX_CMD_LEN] = { NULL, };
+
        AST_RWLIST_RDLOCK(&helpers);
-       for (x=0;argv[x];x++) {
+       for (x = 0; argv[x]; x++) {
                myargv[x] = argv[x];
                if (!find_cli(myargv, -1))
                        break;
@@ -2002,7 +2007,7 @@ int ast_cli_unregister_multiple(struct ast_cli_entry *e, int len)
 /*! \brief helper for final part of handle_help
  *  if locked = 1, assume the list is already locked
  */
-static char *help1(int fd, char *match[], int locked)
+static char *help1(int fd, const char * const match[], int locked)
 {
        char matchstr[80] = "";
        struct ast_cli_entry *e = NULL;
@@ -2077,7 +2082,7 @@ static char *handle_help(struct ast_cli_entry *e, int cmd, struct ast_cli_args *
        return res;
 }
 
-static char *parse_args(const char *s, int *argc, char *argv[], int max, int *trailingwhitespace)
+static char *parse_args(const char *s, int *argc, const char *argv[], int max, int *trailingwhitespace)
 {
        char *duplicate, *cur;
        int x = 0;
@@ -2208,7 +2213,7 @@ char **ast_cli_completion_matches(const char *text, const char *word)
 }
 
 /*! \brief returns true if there are more words to match */
-static int more_words (char * const *dst)
+static int more_words (const char * const *dst)
 {
        int i;
        for (i = 0; dst[i]; i++) {
@@ -2223,7 +2228,7 @@ static int more_words (char * const *dst)
  */
 static char *__ast_cli_generator(const char *text, const char *word, int state, int lock)
 {
-       char *argv[AST_MAX_ARGS];
+       const char *argv[AST_MAX_ARGS];
        struct ast_cli_entry *e = NULL;
        int x = 0, argindex, matchlen;
        int matchnum=0;
@@ -2311,7 +2316,7 @@ char *ast_cli_generator(const char *text, const char *word, int state)
 
 int ast_cli_command_full(int uid, int gid, int fd, const char *s)
 {
-       char *args[AST_MAX_ARGS + 1];
+       const char *args[AST_MAX_ARGS + 1];
        struct ast_cli_entry *e;
        int x;
        char *duplicate = parse_args(s, &x, args + 1, AST_MAX_ARGS, NULL);
index 6c0b013..ab7cacf 100644 (file)
@@ -283,24 +283,17 @@ typedef struct
        } td;
 } digit_detect_state_t;
 
-static float dtmf_row[] =
-{
+static const float dtmf_row[] = {
        697.0,  770.0,  852.0,  941.0
 };
-static float dtmf_col[] =
-{
+static const float dtmf_col[] = {
        1209.0, 1336.0, 1477.0, 1633.0
 };
-
-static float mf_tones[] =
-{
+static const float mf_tones[] = {
        700.0, 900.0, 1100.0, 1300.0, 1500.0, 1700.0
 };
-
-static char dtmf_positions[] = "123A" "456B" "789C" "*0#D";
-
-static char bell_mf_positions[] = "1247C-358A--69*---0B----#";
-
+static const char dtmf_positions[] = "123A" "456B" "789C" "*0#D";
+static const char bell_mf_positions[] = "1247C-358A--69*---0B----#";
 static int thresholds[THRESHOLD_MAX];
 
 static inline void goertzel_sample(goertzel_state_t *s, short sample)
index 5315140..8da3c7b 100644 (file)
@@ -921,7 +921,7 @@ static void set_peers(struct ast_channel **caller, struct ast_channel **callee,
  * Setup channel, set return exten,priority to 's,1'
  * answer chan, sleep chan, park call
 */
-static int builtin_parkcall(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int builtin_parkcall(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        struct ast_channel *parker;
        struct ast_channel *parkee;
@@ -991,7 +991,7 @@ static int play_message_in_bridged_call(struct ast_channel *caller_chan, struct
  * \retval AST_FEATURE_RETURN_SUCCESS on success.
  * \retval -1 on error.
 */
-static int builtin_automonitor(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int builtin_automonitor(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        char *caller_chan_id = NULL, *callee_chan_id = NULL, *args = NULL, *touch_filename = NULL;
        int x = 0;
@@ -1084,7 +1084,7 @@ static int builtin_automonitor(struct ast_channel *chan, struct ast_channel *pee
        return -1;
 }
 
-static int builtin_automixmonitor(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int builtin_automixmonitor(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        char *caller_chan_id = NULL, *callee_chan_id = NULL, *args = NULL, *touch_filename = NULL;
        int x = 0;
@@ -1194,7 +1194,7 @@ static int builtin_automixmonitor(struct ast_channel *chan, struct ast_channel *
 
 }
 
-static int builtin_disconnect(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int builtin_disconnect(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        ast_verb(4, "User hit '%s' to disconnect call.\n", code);
        return AST_FEATURE_RETURN_HANGUP;
@@ -1244,7 +1244,7 @@ static const char *real_ctx(struct ast_channel *transferer, struct ast_channel *
  * \retval AST_FEATURE_RETURN_SUCCESS.
  * \retval -1 on failure.
 */
-static int builtin_blindtransfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int builtin_blindtransfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        struct ast_channel *transferer;
        struct ast_channel *transferee;
@@ -1375,7 +1375,7 @@ static int check_compat(struct ast_channel *c, struct ast_channel *newchan)
  *
  * \return -1 on failure
 */
-static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        struct ast_channel *transferer;
        struct ast_channel *transferee;
@@ -1719,8 +1719,7 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st
 
 AST_RWLOCK_DEFINE_STATIC(features_lock);
 
-static struct ast_call_feature builtin_features[] = 
-{
+static struct ast_call_feature builtin_features[] = {
        { AST_FEATURE_REDIRECT, "Blind Transfer", "blindxfer", "#", "#", builtin_blindtransfer, AST_FEATURE_FLAG_NEEDSDTMF, "" },
        { AST_FEATURE_REDIRECT, "Attended Transfer", "atxfer", "", "", builtin_atxfer, AST_FEATURE_FLAG_NEEDSDTMF, "" },
        { AST_FEATURE_AUTOMON, "One Touch Monitor", "automon", "", "", builtin_automonitor, AST_FEATURE_FLAG_NEEDSDTMF, "" },
@@ -1925,7 +1924,7 @@ struct ast_call_feature *ast_find_call_feature(const char *name)
  * \retval -1 error.
  * \retval -2 when an application cannot be found.
 */
-static int feature_exec_app(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
+static int feature_exec_app(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
 {
        struct ast_app *app;
        struct ast_call_feature *feature = data;
@@ -2021,7 +2020,7 @@ static int remap_feature(const char *name, const char *value)
  * \retval -1 on failure.
 */
 static int feature_interpret_helper(struct ast_channel *chan, struct ast_channel *peer,
-       struct ast_bridge_config *config, char *code, int sense, char *dynamic_features_buf,
+       struct ast_bridge_config *config, const char *code, int sense, char *dynamic_features_buf,
        struct ast_flags *features, int operation, struct ast_call_feature *feature)
 {
        int x;
@@ -2124,7 +2123,7 @@ static int feature_interpret_helper(struct ast_channel *chan, struct ast_channel
  * \retval -1 on failure.
 */
 
-static int feature_interpret(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense) {
+static int feature_interpret(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense) {
 
        char dynamic_features_buf[128];
        const char *peer_dynamic_features, *chan_dynamic_features;
@@ -2153,7 +2152,7 @@ static int feature_interpret(struct ast_channel *chan, struct ast_channel *peer,
 }
 
 
-int ast_feature_detect(struct ast_channel *chan, struct ast_flags *features, char *code, struct ast_call_feature *feature) {
+int ast_feature_detect(struct ast_channel *chan, struct ast_flags *features, const char *code, struct ast_call_feature *feature) {
 
        return feature_interpret_helper(chan, NULL, NULL, code, 0, NULL, features, 0, feature);
 }
@@ -3254,7 +3253,7 @@ AST_APP_OPTIONS(park_call_options, BEGIN_OPTIONS
 END_OPTIONS );
 
 /*! \brief Park a call */
-static int park_call_exec(struct ast_channel *chan, void *data)
+static int park_call_exec(struct ast_channel *chan, const char *data)
 {
        /* Cache the original channel name in case we get masqueraded in the middle
         * of a park--it is still theoretically possible for a transfer to happen before
@@ -3340,7 +3339,7 @@ static int park_call_exec(struct ast_channel *chan, void *data)
 }
 
 /*! \brief Pickup parked call */
-static int park_exec_full(struct ast_channel *chan, void *data, struct ast_parkinglot *parkinglot)
+static int park_exec_full(struct ast_channel *chan, const char *data, struct ast_parkinglot *parkinglot)
 {
        int res = 0;
        struct ast_channel *peer=NULL;
@@ -3350,7 +3349,7 @@ static int park_exec_full(struct ast_channel *chan, void *data, struct ast_parki
        struct ast_bridge_config config;
 
        if (data)
-               park = atoi((char *)data);
+               park = atoi((char *) data);
 
        parkinglot = find_parkinglot(findparkinglotname(chan));         
        if (!parkinglot)
@@ -3503,7 +3502,7 @@ static int park_exec_full(struct ast_channel *chan, void *data, struct ast_parki
        return -1;
 }
 
-static int park_exec(struct ast_channel *chan, void *data) 
+static int park_exec(struct ast_channel *chan, const char *data) 
 {
        return park_exec_full(chan, data, default_parkinglot);
 }
@@ -4110,7 +4109,7 @@ static char *handle_features_reload(struct ast_cli_entry *e, int cmd, struct ast
        return CLI_SUCCESS;
 }
 
-static char mandescr_bridge[] =
+static const char mandescr_bridge[] =
 "Description: Bridge together two channels already in the PBX\n"
 "Variables: ( Headers marked with * are required )\n"
 "   *Channel1: Channel to Bridge to Channel2\n"
@@ -4383,7 +4382,7 @@ static int manager_parking_status(struct mansession *s, const struct message *m)
        return RESULT_SUCCESS;
 }
 
-static char mandescr_park[] =
+static const char mandescr_park[] =
 "Description: Park a channel.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Channel: Channel name to park\n"
@@ -4556,7 +4555,7 @@ END_OPTIONS );
  * answer call if not already, check compatible channels, setup bridge config
  * now bridge call, if transfered party hangs up return to PBX extension.
 */
-static int bridge_exec(struct ast_channel *chan, void *data)
+static int bridge_exec(struct ast_channel *chan, const char *data)
 {
        struct ast_channel *current_dest_chan, *final_dest_chan;
        char *tmp_data  = NULL;
index a0feb65..bc1c60b 100644 (file)
@@ -1354,7 +1354,7 @@ static unsigned char get_n_bits_at(unsigned char *data, int n, int bit)
 
 static int speex_get_wb_sz_at(unsigned char *data, int len, int bit)
 {
-       static int SpeexWBSubModeSz[] = {
+       static const int SpeexWBSubModeSz[] = {
                0, 36, 112, 192,
                352, 0, 0, 0 };
        int off = bit;
@@ -1384,12 +1384,12 @@ static int speex_get_wb_sz_at(unsigned char *data, int len, int bit)
 
 static int speex_samples(unsigned char *data, int len)
 {
-       static int SpeexSubModeSz[] = {
+       static const int SpeexSubModeSz[] = {
                5, 43, 119, 160,
                220, 300, 364, 492, 
                79, 0, 0, 0,
                0, 0, 0, 0 };
-       static int SpeexInBandSz[] = { 
+       static const int SpeexInBandSz[] = { 
                1, 1, 4, 4,
                4, 4, 4, 4,
                8, 8, 16, 16,
index c47f808..8ecea60 100644 (file)
@@ -81,7 +81,7 @@ static int file_exists(char *filename)
        return 0;
 }
 
-static void make_filename(char *buf, int len, char *filename, const char *preflang, char *ext)
+static void make_filename(char *buf, int len, const char *filename, const char *preflang, char *ext)
 {
        if (filename[0] == '/') {
                if (!ast_strlen_zero(preflang))
@@ -96,7 +96,7 @@ static void make_filename(char *buf, int len, char *filename, const char *prefla
        }
 }
 
-struct ast_frame *ast_read_image(char *filename, const char *preflang, int format)
+struct ast_frame *ast_read_image(const char *filename, const char *preflang, int format)
 {
        struct ast_imager *i;
        char buf[256];
@@ -152,7 +152,7 @@ struct ast_frame *ast_read_image(char *filename, const char *preflang, int forma
        return f;
 }
 
-int ast_send_image(struct ast_channel *chan, char *filename)
+int ast_send_image(struct ast_channel *chan, const char *filename)
 {
        struct ast_frame *f;
        int res = -1;
index 4e07e84..fefd29e 100644 (file)
@@ -69,7 +69,7 @@ struct ast_module_user {
 
 AST_LIST_HEAD(module_user_list, ast_module_user);
 
-static unsigned char expected_key[] =
+static const unsigned char expected_key[] =
 { 0x87, 0x76, 0x79, 0x35, 0x23, 0xea, 0x3a, 0xd3,
   0x25, 0x2a, 0xbb, 0x35, 0x87, 0xe4, 0x22, 0x24 };
 
index d9cc3e8..7d5ee7a 100644 (file)
@@ -1208,7 +1208,7 @@ static int authenticate(struct mansession *s, const struct message *m)
 }
 
 /*! \brief Manager PING */
-static char mandescr_ping[] =
+static const char mandescr_ping[] =
 "Description: A 'Ping' action will ellicit a 'Pong' response.  Used to keep the\n"
 "  manager connection open.\n"
 "Variables: NONE\n";
@@ -1225,7 +1225,7 @@ static int action_ping(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_getconfig[] =
+static const char mandescr_getconfig[] =
 "Description: A 'GetConfig' action will dump the contents of a configuration\n"
 "file by category and contents or optionally by specified category only.\n"
 "Variables: (Names marked with * are required)\n"
@@ -1273,7 +1273,7 @@ static int action_getconfig(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_listcategories[] =
+static const char mandescr_listcategories[] =
 "Description: A 'ListCategories' action will dump the categories in\n"
 "a given file.\n"
 "Variables:\n"
@@ -1324,7 +1324,7 @@ static void json_escape(char *out, const char *in)
        *out = '\0';
 }
 
-static char mandescr_getconfigjson[] =
+static const char mandescr_getconfigjson[] =
 "Description: A 'GetConfigJSON' action will dump the contents of a configuration\n"
 "file by category and contents in JSON format.  This only makes sense to be used\n"
 "using rawman over the HTTP interface.\n"
@@ -1543,7 +1543,7 @@ static enum error_type handle_updates(struct mansession *s, const struct message
        return result;
 }
 
-static char mandescr_updateconfig[] =
+static const char mandescr_updateconfig[] =
 "Description: A 'UpdateConfig' action will modify, create, or delete\n"
 "configuration elements in Asterisk configuration files.\n"
 "Variables (X's represent 6 digit number beginning with 000000):\n"
@@ -1632,7 +1632,7 @@ static int action_updateconfig(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_createconfig[] =
+static const char mandescr_createconfig[] =
 "Description: A 'CreateConfig' action will create an empty file in the\n"
 "configuration directory. This action is intended to be used before an\n"
 "UpdateConfig action.\n"
@@ -1658,7 +1658,7 @@ static int action_createconfig(struct mansession *s, const struct message *m)
 }
 
 /*! \brief Manager WAITEVENT */
-static char mandescr_waitevent[] =
+static const char mandescr_waitevent[] =
 "Description: A 'WaitEvent' action will ellicit a 'Success' response.  Whenever\n"
 "a manager event is queued.  Once WaitEvent has been called on an HTTP manager\n"
 "session, events will be generated and queued.\n"
@@ -1771,7 +1771,7 @@ static int action_waitevent(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_listcommands[] =
+static const char mandescr_listcommands[] =
 "Description: Returns the action name and synopsis for every\n"
 "  action that is available to the user\n"
 "Variables: NONE\n";
@@ -1794,7 +1794,7 @@ static int action_listcommands(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_events[] =
+static const char mandescr_events[] =
 "Description: Enable/Disable sending of events to this manager\n"
 "  client.\n"
 "Variables:\n"
@@ -1817,7 +1817,7 @@ static int action_events(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_logoff[] =
+static const char mandescr_logoff[] =
 "Description: Logoff this manager session\n"
 "Variables: NONE\n";
 
@@ -1867,7 +1867,7 @@ static int action_challenge(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_hangup[] =
+static const char mandescr_hangup[] =
 "Description: Hangup a channel\n"
 "Variables: \n"
 "      Channel: The channel name to be hungup\n"
@@ -1916,7 +1916,7 @@ static int action_hangup(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_setvar[] =
+static const char mandescr_setvar[] =
 "Description: Set a global or local channel variable.\n"
 "Variables: (Names marked with * are required)\n"
 "      Channel: Channel to set variable for\n"
@@ -1953,7 +1953,7 @@ static int action_setvar(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_getvar[] =
+static const char mandescr_getvar[] =
 "Description: Get the value of a global or local channel variable.\n"
 "Variables: (Names marked with * are required)\n"
 "      Channel: Channel to read variable from\n"
@@ -2006,7 +2006,7 @@ static int action_getvar(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_status[] =
+static const char mandescr_status[] =
 "Description: Lists channel status along with requested channel vars.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Channel: Name of the channel to query for status\n"
@@ -2163,7 +2163,7 @@ static int action_status(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_sendtext[] =
+static const char mandescr_sendtext[] =
 "Description: Sends A Text Message while in a call.\n"
 "Variables: (Names marked with * are required)\n"
 "       *Channel: Channel to send message to\n"
@@ -2206,7 +2206,7 @@ static int action_sendtext(struct mansession *s, const struct message *m)
        return res;
 }
 
-static char mandescr_redirect[] =
+static const char mandescr_redirect[] =
 "Description: Redirect (transfer) a call.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Channel: Channel to redirect\n"
@@ -2306,7 +2306,7 @@ static int action_redirect(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_atxfer[] =
+static const char mandescr_atxfer[] =
 "Description: Attended transfer.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Channel: Transferer's channel\n"
@@ -2399,7 +2399,7 @@ static int check_blacklist(const char *cmd)
        return 0;
 }
 
-static char mandescr_command[] =
+static const char mandescr_command[] =
 "Description: Run a CLI command.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Command: Asterisk CLI command to run\n"
@@ -2526,7 +2526,7 @@ static void *fast_originate(void *data)
        return NULL;
 }
 
-static char mandescr_originate[] =
+static const char mandescr_originate[] =
 "Description: Generates an outgoing call to a Extension/Context/Priority or\n"
 "  Application/Data\n"
 "Variables: (Names marked with * are required)\n"
@@ -2673,7 +2673,7 @@ static int action_originate(struct mansession *s, const struct message *m)
 
 /*! \brief Help text for manager command mailboxstatus
  */
-static char mandescr_mailboxstatus[] =
+static const char mandescr_mailboxstatus[] =
 "Description: Checks a voicemail account for status.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Mailbox: Full mailbox ID <mailbox>@<vm-context>\n"
@@ -2701,7 +2701,7 @@ static int action_mailboxstatus(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_mailboxcount[] =
+static const char mandescr_mailboxcount[] =
 "Description: Checks a voicemail account for new messages.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Mailbox: Full mailbox ID <mailbox>@<vm-context>\n"
@@ -2734,7 +2734,7 @@ static int action_mailboxcount(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_extensionstate[] =
+static const char mandescr_extensionstate[] =
 "Description: Report the extension state for given extension.\n"
 "  If the extension has a hint, will use devicestate to check\n"
 "  the status of the device connected to the extension.\n"
@@ -2770,7 +2770,7 @@ static int action_extensionstate(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_timeout[] =
+static const char mandescr_timeout[] =
 "Description: Hangup a channel after a certain time.\n"
 "Variables: (Names marked with * are required)\n"
 "      *Channel: Channel name to hangup\n"
@@ -2839,7 +2839,7 @@ static int process_events(struct mansession *s)
        return ret;
 }
 
-static char mandescr_userevent[] =
+static const char mandescr_userevent[] =
 "Description: Send an event to manager sessions.\n"
 "Variables: (Names marked with * are required)\n"
 "       *UserEvent: EventStringToSend\n"
@@ -2864,7 +2864,7 @@ static int action_userevent(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_coresettings[] =
+static const char mandescr_coresettings[] =
 "Description: Query for Core PBX settings.\n"
 "Variables: (Names marked with * are optional)\n"
 "       *ActionID: ActionID of this transaction\n";
@@ -2911,7 +2911,7 @@ static int action_coresettings(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_corestatus[] =
+static const char mandescr_corestatus[] =
 "Description: Query for Core PBX status.\n"
 "Variables: (Names marked with * are optional)\n"
 "       *ActionID: ActionID of this transaction\n";
@@ -2950,7 +2950,7 @@ static int action_corestatus(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_reload[] =
+static const char mandescr_reload[] =
 "Description: Send a reload event.\n"
 "Variables: (Names marked with * are optional)\n"
 "       *ActionID: ActionID of this transaction\n"
@@ -2970,7 +2970,7 @@ static int action_reload(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_coreshowchannels[] =
+static const char mandescr_coreshowchannels[] =
 "Description: List currently defined channels and some information\n"
 "             about them.\n"
 "Variables:\n"
@@ -3052,7 +3052,7 @@ static int action_coreshowchannels(struct mansession *s, const struct message *m
        return 0;
 }
 
-static char mandescr_modulecheck[] =
+static const char mandescr_modulecheck[] =
 "Description: Checks if Asterisk module is loaded\n"
 "Variables: \n"
 "  ActionID: <id>          Action ID for this transaction. Will be returned.\n"
@@ -3105,7 +3105,7 @@ static int manager_modulecheck(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_moduleload[] =
+static const char mandescr_moduleload[] =
 "Description: Loads, unloads or reloads an Asterisk module in a running system.\n"
 "Variables: \n"
 "  ActionID: <id>          Action ID for this transaction. Will be returned.\n"
@@ -3684,7 +3684,7 @@ enum output_format {
        FORMAT_XML,
 };
 
-static char *contenttype[] = {
+static const char * const contenttype[] = {
        [FORMAT_RAW] = "plain",
        [FORMAT_HTML] = "html",
        [FORMAT_XML] =  "xml",
index 28c0480..a246902 100644 (file)
@@ -855,7 +855,7 @@ struct ast_context {
 
 /*! \brief ast_app: A registered application */
 struct ast_app {
-       int (*execute)(struct ast_channel *chan, void *data);
+       int (*execute)(struct ast_channel *chan, const char *data);
        AST_DECLARE_STRING_FIELDS(
                AST_STRING_FIELD(synopsis);     /*!< Synopsis text for 'show applications' */
                AST_STRING_FIELD(description);  /*!< Description (help text) for 'show application &lt;name&gt;' */
@@ -919,33 +919,33 @@ struct pbx_exception {
        int priority;                           /*!< Priority associated with this exception */
 };
 
-static int pbx_builtin_answer(struct ast_channel *, void *);
-static int pbx_builtin_goto(struct ast_channel *, void *);
-static int pbx_builtin_hangup(struct ast_channel *, void *);
-static int pbx_builtin_background(struct ast_channel *, void *);
-static int pbx_builtin_wait(struct ast_channel *, void *);
-static int pbx_builtin_waitexten(struct ast_channel *, void *);
-static int pbx_builtin_incomplete(struct ast_channel *, void *);
-static int pbx_builtin_resetcdr(struct ast_channel *, void *);
-static int pbx_builtin_setamaflags(struct ast_channel *, void *);
-static int pbx_builtin_ringing(struct ast_channel *, void *);
-static int pbx_builtin_proceeding(struct ast_channel *, void *);
-static int pbx_builtin_progress(struct ast_channel *, void *);
-static int pbx_builtin_congestion(struct ast_channel *, void *);
-static int pbx_builtin_busy(struct ast_channel *, void *);
-static int pbx_builtin_noop(struct ast_channel *, void *);
-static int pbx_builtin_gotoif(struct ast_channel *, void *);
-static int pbx_builtin_gotoiftime(struct ast_channel *, void *);
-static int pbx_builtin_execiftime(struct ast_channel *, void *);
-static int pbx_builtin_saynumber(struct ast_channel *, void *);
-static int pbx_builtin_saydigits(struct ast_channel *, void *);
-static int pbx_builtin_saycharacters(struct ast_channel *, void *);
-static int pbx_builtin_sayphonetic(struct ast_channel *, void *);
+static int pbx_builtin_answer(struct ast_channel *, const char *);
+static int pbx_builtin_goto(struct ast_channel *, const char *);
+static int pbx_builtin_hangup(struct ast_channel *, const char *);
+static int pbx_builtin_background(struct ast_channel *, const char *);
+static int pbx_builtin_wait(struct ast_channel *, const char *);
+static int pbx_builtin_waitexten(struct ast_channel *, const char *);
+static int pbx_builtin_incomplete(struct ast_channel *, const char *);
+static int pbx_builtin_resetcdr(struct ast_channel *, const char *);
+static int pbx_builtin_setamaflags(struct ast_channel *, const char *);
+static int pbx_builtin_ringing(struct ast_channel *, const char *);
+static int pbx_builtin_proceeding(struct ast_channel *, const char *);
+static int pbx_builtin_progress(struct ast_channel *, const char *);
+static int pbx_builtin_congestion(struct ast_channel *, const char *);
+static int pbx_builtin_busy(struct ast_channel *, const char *);
+static int pbx_builtin_noop(struct ast_channel *, const char *);
+static int pbx_builtin_gotoif(struct ast_channel *, const char *);
+static int pbx_builtin_gotoiftime(struct ast_channel *, const char *);
+static int pbx_builtin_execiftime(struct ast_channel *, const char *);
+static int pbx_builtin_saynumber(struct ast_channel *, const char *);
+static int pbx_builtin_saydigits(struct ast_channel *, const char *);
+static int pbx_builtin_saycharacters(struct ast_channel *, const char *);
+static int pbx_builtin_sayphonetic(struct ast_channel *, const char *);
 static int matchcid(const char *cidpattern, const char *callerid);
-int pbx_builtin_setvar(struct ast_channel *, void *);
+int pbx_builtin_setvar(struct ast_channel *, const char *);
 void log_match_char_tree(struct match_char *node, char *prefix); /* for use anywhere */
-int pbx_builtin_setvar_multiple(struct ast_channel *, void *);
-static int pbx_builtin_importvar(struct ast_channel *, void *);
+int pbx_builtin_setvar_multiple(struct ast_channel *, const char *);
+static int pbx_builtin_importvar(struct ast_channel *, const char *);
 static void set_ext_pri(struct ast_channel *c, const char *exten, int pri);
 static void new_find_extension(const char *str, struct scoreboard *score,
                struct match_char *tree, int length, int spec, const char *callerid,
@@ -1083,7 +1083,7 @@ static AST_RWLIST_HEAD_STATIC(acf_root, ast_custom_function);
 /*! \brief Declaration of builtin applications */
 static struct pbx_builtin {
        char name[AST_MAX_APP];
-       int (*execute)(struct ast_channel *chan, void *data);
+       int (*execute)(struct ast_channel *chan, const char *data);
 } builtins[] =
 {
        /* These applications are built into the PBX core and do not
@@ -1320,9 +1320,9 @@ int check_contexts(char *file, int line )
 /*
    \note This function is special. It saves the stack so that no matter
    how many times it is called, it returns to the same place */
-int pbx_exec(struct ast_channel *c, /*!< Channel */
-            struct ast_app *app,       /*!< Application */
-            void *data)                /*!< Data for execution */
+int pbx_exec(struct ast_channel *c,    /*!< Channel */
+            struct ast_app *app,       /*!< Application */
+            const char *data)          /*!< Data for execution */
 {
        int res;
        struct ast_module_user *u = NULL;
@@ -3040,9 +3040,8 @@ static struct ast_datastore_info exception_store_info = {
        .destroy = exception_store_free,
 };
 
-int pbx_builtin_raise_exception(struct ast_channel *chan, void *vreason)
+int pbx_builtin_raise_exception(struct ast_channel *chan, const char *reason)
 {
-       const char *reason = vreason;
        struct ast_datastore *ds = ast_channel_datastore_find(chan, &exception_store_info, NULL);
        struct pbx_exception *exception = NULL;
 
@@ -5332,7 +5331,7 @@ int ast_context_unlockmacro(const char *context)
 }
 
 /*! \brief Dynamically register a new dial plan application */
-int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *), const char *synopsis, const char *description, void *mod)
+int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, const char *), const char *synopsis, const char *description, void *mod)
 {
        struct ast_app *tmp, *cur = NULL;
        char tmps[80];
@@ -5757,7 +5756,7 @@ static char *handle_show_applications(struct ast_cli_entry *e, int cmd, struct a
        int like = 0, describing = 0;
        int total_match = 0;    /* Number of matches in like clause */
        int total_apps = 0;     /* Number of apps registered */
-       static char* choices[] = { "like", "describing", NULL };
+       static const char * const choices[] = { "like", "describing", NULL };
 
        switch (cmd) {
        case CLI_INIT:
@@ -6127,7 +6126,7 @@ static char *handle_show_dialplan(struct ast_cli_entry *e, int cmd, struct ast_c
                        if (ast_strlen_zero(exten))
                                exten = NULL;
                } else { /* no '@' char, only context given */
-                       context = a->argv[2];
+                       context = ast_strdupa(a->argv[2]);
                }
                if (ast_strlen_zero(context))
                        context = NULL;
@@ -6195,7 +6194,7 @@ static char *handle_debug_dialplan(struct ast_cli_entry *e, int cmd, struct ast_
                        if (ast_strlen_zero(exten))
                                exten = NULL;
                } else { /* no '@' char, only context given */
-                       context = a->argv[2];
+                       context = ast_strdupa(a->argv[2]);
                }
                if (ast_strlen_zero(context))
                        context = NULL;
@@ -6417,7 +6416,7 @@ static int manager_show_dialplan(struct mansession *s, const struct message *m)
        return 0;
 }
 
-static char mandescr_show_dialplan[] =
+static const char mandescr_show_dialplan[] =
 "Description: Show dialplan contexts and extensions.\n"
 "Be aware that showing the full dialplan may take a lot of capacity\n"
 "Variables: \n"
@@ -7025,7 +7024,7 @@ int ast_context_add_include(const char *context, const char *include, const char
  * return the index of the matching entry, starting from 1.
  * If names is not supplied, try numeric values.
  */
-static int lookup_name(const char *s, char *const names[], int max)
+static int lookup_name(const char *s, const char * const names[], int max)
 {
        int i;
 
@@ -7048,7 +7047,7 @@ static int lookup_name(const char *s, char *const names[], int max)
 /*! \brief helper function to return a range up to max (7, 12, 31 respectively).
  * names, if supplied, is an array of names that should be mapped to numbers.
  */
-static unsigned get_range(char *src, int max, char *const names[], const char *msg)
+static unsigned get_range(char *src, int max, const char * const names[], const char *msg)
 {
        int start, end; /* start and ending position */
        unsigned int mask = 0;
@@ -7151,7 +7150,7 @@ static void get_timerange(struct ast_timing *i, char *times)
        return;
 }
 
-static char *days[] =
+static const char * const days[] =
 {
        "sun",
        "mon",
@@ -7163,7 +7162,7 @@ static char *days[] =
        NULL,
 };
 
-static char *months[] =
+static const char * const months[] =
 {
        "jan",
        "feb",
@@ -8659,7 +8658,7 @@ void ast_context_destroy(struct ast_context *con, const char *registrar)
        ast_unlock_contexts();
 }
 
-static void wait_for_hangup(struct ast_channel *chan, void *data)
+static void wait_for_hangup(struct ast_channel *chan, const void *data)
 {
        int res;
        struct ast_frame *f;
@@ -8684,7 +8683,7 @@ static void wait_for_hangup(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_proceeding(struct ast_channel *chan, void *data)
+static int pbx_builtin_proceeding(struct ast_channel *chan, const char *data)
 {
        ast_indicate(chan, AST_CONTROL_PROCEEDING);
        return 0;
@@ -8693,7 +8692,7 @@ static int pbx_builtin_proceeding(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_progress(struct ast_channel *chan, void *data)
+static int pbx_builtin_progress(struct ast_channel *chan, const char *data)
 {
        ast_indicate(chan, AST_CONTROL_PROGRESS);
        return 0;
@@ -8702,7 +8701,7 @@ static int pbx_builtin_progress(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_ringing(struct ast_channel *chan, void *data)
+static int pbx_builtin_ringing(struct ast_channel *chan, const char *data)
 {
        ast_indicate(chan, AST_CONTROL_RINGING);
        return 0;
@@ -8711,7 +8710,7 @@ static int pbx_builtin_ringing(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_busy(struct ast_channel *chan, void *data)
+static int pbx_builtin_busy(struct ast_channel *chan, const char *data)
 {
        ast_indicate(chan, AST_CONTROL_BUSY);
        /* Don't change state of an UP channel, just indicate
@@ -8727,7 +8726,7 @@ static int pbx_builtin_busy(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_congestion(struct ast_channel *chan, void *data)
+static int pbx_builtin_congestion(struct ast_channel *chan, const char *data)
 {
        ast_indicate(chan, AST_CONTROL_CONGESTION);
        /* Don't change state of an UP channel, just indicate
@@ -8741,7 +8740,7 @@ static int pbx_builtin_congestion(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_answer(struct ast_channel *chan, void *data)
+static int pbx_builtin_answer(struct ast_channel *chan, const char *data)
 {
        int delay = 0;
        int answer_cdr = 1;
@@ -8773,9 +8772,9 @@ static int pbx_builtin_answer(struct ast_channel *chan, void *data)
        return __ast_answer(chan, delay, answer_cdr);
 }
 
-static int pbx_builtin_incomplete(struct ast_channel *chan, void *data)
+static int pbx_builtin_incomplete(struct ast_channel *chan, const char *data)
 {
-       char *options = data;
+       const char *options = data;
        int answer = 1;
 
        /* Some channels can receive DTMF in unanswered state; some cannot */
@@ -8803,7 +8802,7 @@ AST_APP_OPTIONS(resetcdr_opts, {
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_resetcdr(struct ast_channel *chan, void *data)
+static int pbx_builtin_resetcdr(struct ast_channel *chan, const char *data)
 {
        char *args;
        struct ast_flags flags = { 0 };
@@ -8821,7 +8820,7 @@ static int pbx_builtin_resetcdr(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_setamaflags(struct ast_channel *chan, void *data)
+static int pbx_builtin_setamaflags(struct ast_channel *chan, const char *data)
 {
        /* Copy the AMA Flags as specified */
        ast_cdr_setamaflags(chan, data ? data : "");
@@ -8831,7 +8830,7 @@ static int pbx_builtin_setamaflags(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_hangup(struct ast_channel *chan, void *data)
+static int pbx_builtin_hangup(struct ast_channel *chan, const char *data)
 {
        if (!ast_strlen_zero(data)) {
                int cause;
@@ -8861,7 +8860,7 @@ static int pbx_builtin_hangup(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_gotoiftime(struct ast_channel *chan, void *data)
+static int pbx_builtin_gotoiftime(struct ast_channel *chan, const char *data)
 {
        char *s, *ts, *branch1, *branch2, *branch;
        struct ast_timing timing;
@@ -8896,7 +8895,7 @@ static int pbx_builtin_gotoiftime(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_execiftime(struct ast_channel *chan, void *data)
+static int pbx_builtin_execiftime(struct ast_channel *chan, const char *data)
 {
        char *s, *appname;
        struct ast_timing timing;
@@ -8950,7 +8949,7 @@ static int pbx_builtin_execiftime(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_wait(struct ast_channel *chan, void *data)
+static int pbx_builtin_wait(struct ast_channel *chan, const char *data)
 {
        double s;
        int ms;
@@ -8966,7 +8965,7 @@ static int pbx_builtin_wait(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_waitexten(struct ast_channel *chan, void *data)
+static int pbx_builtin_waitexten(struct ast_channel *chan, const char *data)
 {
        int ms, res;
        double s;
@@ -9035,7 +9034,7 @@ static int pbx_builtin_waitexten(struct ast_channel *chan, void *data)
 /*!
  * \ingroup applications
  */
-static int pbx_builtin_background(struct ast_channel *chan, void *data)
+static int pbx_builtin_background(struct ast_channel *chan, const char *data)
 {
        int res = 0;
        int mres = 0;
@@ -9133,7 +9132,7 @@ done:
 /*! Goto
  * \ingroup applications
  */
-static int pbx_builtin_goto(struct ast_channel *chan, void *data)
+static int pbx_builtin_goto(struct ast_channel *chan, const char *data)
 {
        int res = ast_parseable_goto(chan, data);
        if (!res)
@@ -9302,7 +9301,7 @@ void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const
                ast_rwlock_unlock(&globalslock);
 }
 
-int pbx_builtin_setvar(struct ast_channel *chan, void *data)
+int pbx_builtin_setvar(struct ast_channel *chan, const char *data)
 {
        char *name, *value, *mydata;
 
@@ -9325,7 +9324,7 @@ int pbx_builtin_setvar(struct ast_channel *chan, void *data)
        return(0);
 }
 
-int pbx_builtin_setvar_multiple(struct ast_channel *chan, void *vdata)
+int pbx_builtin_setvar_multiple(struct ast_channel *chan, const char *vdata)
 {
        char *data;
        int x;
@@ -9361,7 +9360,7 @@ int pbx_builtin_setvar_multiple(struct ast_channel *chan, void *vdata)
        return 0;
 }
 
-int pbx_builtin_importvar(struct ast_channel *chan, void *data)
+int pbx_builtin_importvar(struct ast_channel *chan, const char *data)
 {
        char *name;
        char *value;
@@ -9398,7 +9397,7 @@ int pbx_builtin_importvar(struct ast_channel *chan, void *data)
        return(0);
 }
 
-static int pbx_builtin_noop(struct ast_channel *chan, void *data)
+static int pbx_builtin_noop(struct ast_channel *chan, const char *data)
 {
        return 0;
 }
@@ -9425,7 +9424,7 @@ int pbx_checkcondition(const char *condition)
        }
 }
 
-static int pbx_builtin_gotoif(struct ast_channel *chan, void *data)
+static int pbx_builtin_gotoif(struct ast_channel *chan, const char *data)
 {
        char *condition, *branch1, *branch2, *branch;
        char *stringp;
@@ -9449,7 +9448,7 @@ static int pbx_builtin_gotoif(struct ast_channel *chan, void *data)
        return pbx_builtin_goto(chan, branch);
 }
 
-static int pbx_builtin_saynumber(struct ast_channel *chan, void *data)
+static int pbx_builtin_saynumber(struct ast_channel *chan, const char *data)
 {
        char tmp[256];
        char *number = tmp;
@@ -9477,7 +9476,7 @@ static int pbx_builtin_saynumber(struct ast_channel *chan, void *data)
        return 0;
 }
 
-static int pbx_builtin_saydigits(struct ast_channel *chan, void *data)
+static int pbx_builtin_saydigits(struct ast_channel *chan, const char *data)
 {
        int res = 0;
 
@@ -9486,7 +9485,7 @@ static int pbx_builtin_saydigits(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int pbx_builtin_saycharacters(struct ast_channel *chan, void *data)
+static int pbx_builtin_saycharacters(struct ast_channel *chan, const char *data)
 {
        int res = 0;
 
@@ -9495,7 +9494,7 @@ static int pbx_builtin_saycharacters(struct ast_channel *chan, void *data)
        return res;
 }
 
-static int pbx_builtin_sayphonetic(struct ast_channel *chan, void *data)
+static int pbx_builtin_sayphonetic(struct ast_channel *chan, const char *data)
 {
        int res = 0;
 
index 9aa86ce..0de97e5 100644 (file)
@@ -62,7 +62,7 @@ struct tps_taskprocessor_stats {
 /*! \brief A ast_taskprocessor structure is a singleton by name */
 struct ast_taskprocessor {
        /*! \brief Friendly name of the taskprocessor */
-       char *name;
+       const char *name;
        /*! \brief Thread poll condition */
        ast_cond_t poll_cond;
        /*! \brief Taskprocessor thread */
@@ -189,7 +189,7 @@ static int tps_ping_handler(void *datap)
 static char *cli_tps_ping(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        struct timeval begin, end, delta;
-       char *name;
+       const char *name;
        struct timeval when;
        struct timespec ts;
        struct ast_taskprocessor *tps = NULL;
@@ -366,7 +366,7 @@ static void tps_taskprocessor_destroy(void *tps)
                ast_free(t->stats);
                t->stats = NULL;
        }
-       ast_free(t->name);
+       ast_free((char *) t->name);
 }
 
 /* pop the front task and return it */
@@ -404,7 +404,7 @@ const char *ast_taskprocessor_name(struct ast_taskprocessor *tps)
 /* Provide a reference to a taskprocessor.  Create the taskprocessor if necessary, but don't
  * create the taskprocessor if we were told via ast_tps_options to return a reference only 
  * if it already exists */
-struct ast_taskprocessor *ast_taskprocessor_get(char *name, enum ast_tps_options create)
+struct ast_taskprocessor *ast_taskprocessor_get(const char *name, enum ast_tps_options create)
 {
        struct ast_taskprocessor *p, tmp_tps = {
                .name = name,
index 478ce8f..dfe89e1 100644 (file)
@@ -1134,7 +1134,7 @@ static char *handle_cli_udptl_set_debug(struct ast_cli_entry *e, int cmd, struct
                if (strncasecmp(a->argv[3], "ip", 2))
                        return CLI_SHOWUSAGE;
                port = 0;
-               arg = a->argv[4];
+               arg = ast_strdupa(a->argv[4]);
                p = strstr(arg, ":");
                if (p) {
                        *p = '\0';
index 18a118f..0be633c 100644 (file)
@@ -177,7 +177,7 @@ void ast_ulaw_init(void)
 #ifndef G711_NEW_ALGORITHM
        for (i = 0;i < 256;i++) {
                short mu,e,f,y;
-               static short etab[]={0,132,396,924,1980,4092,8316,16764};
+               static const short etab[]={0,132,396,924,1980,4092,8316,16764};
                
                mu = 255-i;
                e = (mu & 0x70)/16;
index e724160..59a29ce 100644 (file)
@@ -227,7 +227,7 @@ struct hostent *ast_gethostbyname(const char *host, struct ast_hostent *hp)
 }
 
 /*! \brief Produce 32 char MD5 hash of value. */
-void ast_md5_hash(char *output, char *input)
+void ast_md5_hash(char *output, const char *input)
 {
        struct MD5Context md5;
        unsigned char digest[16];
@@ -235,7 +235,7 @@ void ast_md5_hash(char *output, char *input)
        int x;
 
        MD5Init(&md5);
-       MD5Update(&md5, (unsigned char *)input, strlen(input));
+       MD5Update(&md5, (const unsigned char *) input, strlen(input));
        MD5Final(digest, &md5);
        ptr = output;
        for (x = 0; x < 16; x++)
@@ -243,7 +243,7 @@ void ast_md5_hash(char *output, char *input)
 }
 
 /*! \brief Produce 40 char SHA1 hash of value. */
-void ast_sha1_hash(char *output, char *input)
+void ast_sha1_hash(char *output, const char *input)
 {
        struct SHA1Context sha;
        char *ptr;
@@ -1446,7 +1446,7 @@ char *ast_process_quotes_and_slashes(char *start, char find, char replace_with)
        return dataPut;
 }
 
-void ast_join(char *s, size_t len, char * const w[])
+void ast_join(char *s, size_t len, const char * const w[])
 {
        int x, ofs = 0;
        const char *src;
index 15dae84..3c57442 100644 (file)
@@ -155,7 +155,7 @@ static void dump_hint(char *output, int maxlen, void *value, int len)
 
 static void dump_cause(char *output, int maxlen, void *value, int len)
 {
-       static char *causes[] = {
+       static const char * const causes[] = {
                "SUCCESS",
                "GENERAL",
                "DYNAMIC",
index f1b8fb0..f6371f1 100644 (file)
@@ -251,7 +251,7 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk Extension Langu
               );
 
 #ifdef AAL_ARGCHECK
-static char *ael_funclist[] =
+static const char * const ael_funclist[] =
 {
        "AGENT",
        "ARRAY",
index 5bd106d..8bebf13 100644 (file)
@@ -328,7 +328,7 @@ static char *handle_cli_dialplan_remove_extension(struct ast_cli_entry *e, int c
         * Priority input checking ...
         */
        if (a->argc == 5) {
-               char *c = a->argv[4];
+               const char *c = a->argv[4];
 
                /* check for digits in whole parameter for right priority ...
                 * why? because atoi (strtol) returns 0 if any characters in
@@ -935,8 +935,7 @@ static char *handle_cli_dialplan_add_extension(struct ast_cli_entry *e, int cmd,
                if (strcmp(a->argv[6], "replace"))
                        return CLI_SHOWUSAGE;
 
-       /* XXX overwrite argv[3] */
-       whole_exten = a->argv[3];
+       whole_exten = ast_strdupa(a->argv[3]);
        exten = strsep(&whole_exten,",");
        if (strchr(exten, '/')) {
                cidmatch = exten;
index 93dc6c6..f7ff01c 100644 (file)
@@ -425,7 +425,7 @@ enum agi_result {
        AGI_RESULT_HANGUP,
 };
 
-static agi_command *find_command(char *cmds[], int exact);
+static agi_command *find_command(const char * const cmds[], int exact);
 
 AST_THREADSTORAGE(agi_buf);
 #define AGI_BUF_INITSIZE 256
@@ -1093,7 +1093,7 @@ static void setup_env(struct ast_channel *chan, char *request, int fd, int enhan
        ast_agi_send(fd, chan, "\n");
 }
 
-static int handle_answer(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_answer(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res = 0;
 
@@ -1105,13 +1105,13 @@ static int handle_answer(struct ast_channel *chan, AGI *agi, int argc, char *arg
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_asyncagi_break(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_asyncagi_break(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        ast_agi_send(agi->fd, chan, "200 result=0\n");
        return RESULT_FAILURE;
 }
 
-static int handle_waitfordigit(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_waitfordigit(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, to;
 
@@ -1124,7 +1124,7 @@ static int handle_waitfordigit(struct ast_channel *chan, AGI *agi, int argc, cha
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_sendtext(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_sendtext(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res;
 
@@ -1143,7 +1143,7 @@ static int handle_sendtext(struct ast_channel *chan, AGI *agi, int argc, char *a
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_recvchar(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_recvchar(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res;
 
@@ -1163,7 +1163,7 @@ static int handle_recvchar(struct ast_channel *chan, AGI *agi, int argc, char *a
        return RESULT_FAILURE;
 }
 
-static int handle_recvtext(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_recvtext(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        char *buf;
 
@@ -1180,7 +1180,7 @@ static int handle_recvtext(struct ast_channel *chan, AGI *agi, int argc, char *a
        return RESULT_SUCCESS;
 }
 
-static int handle_tddmode(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_tddmode(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, x;
 
@@ -1207,7 +1207,7 @@ static int handle_tddmode(struct ast_channel *chan, AGI *agi, int argc, char *ar
        return RESULT_SUCCESS;
 }
 
-static int handle_sendimage(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_sendimage(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res;
 
@@ -1223,10 +1223,10 @@ static int handle_sendimage(struct ast_channel *chan, AGI *agi, int argc, char *
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_controlstreamfile(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_controlstreamfile(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res = 0, skipms = 3000;
-       char *fwd = "#", *rev = "*", *suspend = NULL, *stop = NULL;     /* Default values */
+       const char *fwd = "#", *rev = "*", *suspend = NULL, *stop = NULL;       /* Default values */
 
        if (argc < 5 || argc > 9) {
                return RESULT_SHOWUSAGE;
@@ -1259,12 +1259,12 @@ static int handle_controlstreamfile(struct ast_channel *chan, AGI *agi, int argc
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_streamfile(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_streamfile(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, vres;
        struct ast_filestream *fs, *vfs;
        long sample_offset = 0, max_length;
-       char *edigits = "";
+       const char *edigits = "";
 
        if (argc < 4 || argc > 5)
                return RESULT_SHOWUSAGE;
@@ -1309,13 +1309,13 @@ static int handle_streamfile(struct ast_channel *chan, AGI *agi, int argc, char
 }
 
 /*! \brief get option - really similar to the handle_streamfile, but with a timeout */
-static int handle_getoption(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_getoption(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, vres;
        struct ast_filestream *fs, *vfs;
        long sample_offset = 0, max_length;
        int timeout = 0;
-       char *edigits = "";
+       const char *edigits = "";
 
        if ( argc < 4 || argc > 5 )
                return RESULT_SHOWUSAGE;
@@ -1378,7 +1378,7 @@ static int handle_getoption(struct ast_channel *chan, AGI *agi, int argc, char *
 
 /*! \brief Say number in various language syntaxes */
 /* While waiting, we're sending a NULL.  */
-static int handle_saynumber(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_saynumber(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, num;
 
@@ -1393,7 +1393,7 @@ static int handle_saynumber(struct ast_channel *chan, AGI *agi, int argc, char *
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_saydigits(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_saydigits(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, num;
 
@@ -1409,7 +1409,7 @@ static int handle_saydigits(struct ast_channel *chan, AGI *agi, int argc, char *
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_sayalpha(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_sayalpha(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res;
 
@@ -1423,7 +1423,7 @@ static int handle_sayalpha(struct ast_channel *chan, AGI *agi, int argc, char *a
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_saydate(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_saydate(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, num;
 
@@ -1438,7 +1438,7 @@ static int handle_saydate(struct ast_channel *chan, AGI *agi, int argc, char *ar
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_saytime(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_saytime(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, num;
 
@@ -1453,11 +1453,11 @@ static int handle_saytime(struct ast_channel *chan, AGI *agi, int argc, char *ar
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_saydatetime(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_saydatetime(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res = 0;
        time_t unixtime;
-       char *format, *zone = NULL;
+       const char *format, *zone = NULL;
 
        if (argc < 4)
                return RESULT_SHOWUSAGE;
@@ -1487,7 +1487,7 @@ static int handle_saydatetime(struct ast_channel *chan, AGI *agi, int argc, char
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_sayphonetic(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_sayphonetic(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res;
 
@@ -1501,7 +1501,7 @@ static int handle_sayphonetic(struct ast_channel *chan, AGI *agi, int argc, char
        return (res >= 0) ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
-static int handle_getdata(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_getdata(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res, max, timeout;
        char data[1024];
@@ -1528,7 +1528,7 @@ static int handle_getdata(struct ast_channel *chan, AGI *agi, int argc, char *ar
        return RESULT_SUCCESS;
 }
 
-static int handle_setcontext(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_setcontext(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
 
        if (argc != 3)
@@ -1538,7 +1538,7 @@ static int handle_setcontext(struct ast_channel *chan, AGI *agi, int argc, char
        return RESULT_SUCCESS;
 }
 
-static int handle_setextension(struct ast_channel *chan, AGI *agi, int argc, char **argv)
+static int handle_setextension(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        if (argc != 3)
                return RESULT_SHOWUSAGE;
@@ -1547,7 +1547,7 @@ static int handle_setextension(struct ast_channel *chan, AGI *agi, int argc, cha
        return RESULT_SUCCESS;
 }
 
-static int handle_setpriority(struct ast_channel *chan, AGI *agi, int argc, char **argv)
+static int handle_setpriority(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int pri;
 
@@ -1564,7 +1564,7 @@ static int handle_setpriority(struct ast_channel *chan, AGI *agi, int argc, char
        return RESULT_SUCCESS;
 }
 
-static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        struct ast_filestream *fs;
        struct ast_frame *f;
@@ -1741,7 +1741,7 @@ static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, char
        return RESULT_SUCCESS;
 }
 
-static int handle_autohangup(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
+static int handle_autohangup(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        double timeout;
        struct timeval whentohangup = { 0, 0 };
@@ -1761,7 +1761,7 @@ static int handle_autohangup(struct ast_channel *chan, AGI *agi, int argc, char
        return RESULT_SUCCESS;
 }
 
-static int handle_hangup(struct ast_channel *chan, AGI *agi, int argc, char **argv)
+static int handle_hangup(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        struct ast_channel *c;
 
@@ -1787,7 +1787,7 @@ static int handle_hangup(struct ast_channel *chan, AGI *agi, int argc, char **ar
        }
 }
 
-static int handle_exec(struct ast_channel *chan, AGI *agi, int argc, char **argv)
+static int handle_exec(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
 {
        int res;
        struct ast_app *app_to_exec;
@@ -1802,7 +1802,8 @@ static int handle_exec(struct ast_channel *chan, AGI *agi, int argc, char **argv
                        ast_masq_park_call(chan, NULL, 0, NULL);
                }
                if (ast_compat_res_agi && !ast_strlen_zero(argv[2])) {
-                       char *compat = alloca(strlen(argv[2]) * 2 + 1), *cptr, *vptr;
+                       char *compat = alloca(strlen(argv[2]) * 2 + 1), *cptr;
+                       const char *vptr;
                        for (cptr = compat, vptr = argv[2]; *vptr; vptr++) {
                                if (*vptr == ',') {
                                        *cptr++ = '\\';