diff options
author | Mark Spencer <markster@digium.com> | 2004-08-21 18:55:39 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2004-08-21 18:55:39 +0000 |
commit | de3528f0be09d8233154d242576c7eaf99483191 (patch) | |
tree | f1efa8fc2c3644c6093ea329dbd74dd393ab2bdf | |
parent | d0ab0358aac1c0874192064585de0ad4d85b0ef4 (diff) |
Save CID and switches in "save dialplan" command (bug #2279)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3630 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rwxr-xr-x | include/asterisk/pbx.h | 2 | ||||
-rwxr-xr-x | pbx.c | 10 | ||||
-rwxr-xr-x | pbx/pbx_config.c | 37 |
3 files changed, 44 insertions, 5 deletions
diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h index ba7507a8d..f127a0e69 100755 --- a/include/asterisk/pbx.h +++ b/include/asterisk/pbx.h @@ -503,6 +503,8 @@ char *ast_get_switch_data(struct ast_sw *sw); /* Other extension stuff */ int ast_get_extension_priority(struct ast_exten *exten); +int ast_get_extension_matchcid(struct ast_exten *e); +char *ast_get_extension_cidmatch(struct ast_exten *e); char *ast_get_extension_app(struct ast_exten *e); void *ast_get_extension_app_data(struct ast_exten *e); @@ -4864,6 +4864,16 @@ char *ast_get_ignorepat_registrar(struct ast_ignorepat *ip) return ip ? ip->registrar : NULL; } +int ast_get_extension_matchcid(struct ast_exten *e) +{ + return e ? e->matchcid : 0; +} + +char *ast_get_extension_cidmatch(struct ast_exten *e) +{ + return e ? e->cidmatch : NULL; +} + char *ast_get_extension_app(struct ast_exten *e) { return e ? e->app : NULL; diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c index e82c49737..39fd33244 100755 --- a/pbx/pbx_config.c +++ b/pbx/pbx_config.c @@ -1016,6 +1016,7 @@ static int handle_save_dialplan(int fd, int argc, char *argv[]) struct ast_exten *e, *last_written_e = NULL; struct ast_include *i; struct ast_ignorepat *ip; + struct ast_sw *sw; /* registered by this module? */ if (!strcmp(ast_get_context_registrar(c), registrar)) { @@ -1058,11 +1059,19 @@ static int handle_save_dialplan(int fd, int argc, char *argv[]) } tempdata = startdata; } - fprintf(output, "exten => %s,%d,%s(%s)\n", - ast_get_extension_name(p), - ast_get_extension_priority(p), - ast_get_extension_app(p), - tempdata); + if (ast_get_extension_matchcid(p)) + fprintf(output, "exten => %s/%s,%d,%s(%s)\n", + ast_get_extension_name(p), + ast_get_extension_cidmatch(p), + ast_get_extension_priority(p), + ast_get_extension_app(p), + tempdata); + else + fprintf(output, "exten => %s,%d,%s(%s)\n", + ast_get_extension_name(p), + ast_get_extension_priority(p), + ast_get_extension_app(p), + tempdata); if (tempdata) free(tempdata); } else @@ -1097,6 +1106,24 @@ static int handle_save_dialplan(int fd, int argc, char *argv[]) if (ast_walk_context_includes(c, NULL)) fprintf(output, "\n"); + /* walk through switches */ + sw = ast_walk_context_switches(c, NULL); + while (sw) { + if (!strcmp(ast_get_switch_registrar(sw), registrar)) { + if (!context_header_written) { + fprintf(output, "[%s]\n", ast_get_context_name(c)); + context_header_written = 1; + } + fprintf(output, "switch => %s/%s\n", + ast_get_switch_name(sw), + ast_get_switch_data(sw)); + } + sw = ast_walk_context_switches(c, sw); + } + + if (ast_walk_context_switches(c, NULL)) + fprintf(output, "\n"); + /* fireout ignorepats ... */ ip = ast_walk_context_ignorepats(c, NULL); while (ip) { |