dect
/
asterisk
Archived
13
0
Fork 0

Save CID and switches in "save dialplan" command (bug #2279)

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3630 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
markster 2004-08-21 18:55:39 +00:00
parent 2144646c41
commit 94057171ac
3 changed files with 44 additions and 5 deletions

View File

@ -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);

10
pbx.c
View File

@ -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;

View File

@ -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) {