aboutsummaryrefslogtreecommitdiffstats
path: root/pbx/pbx_config.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-01-28 01:29:47 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-01-28 01:29:47 +0000
commitacd2b6d1105dfd9626334d458a3c30dd10f89a02 (patch)
treef092959cf85735e1d2810ec205eb447d48ecab2b /pbx/pbx_config.c
parentee12a11317c039ce2948ae48d12bd349b8536146 (diff)
Save global variables across "save dialplan" (bug #426)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2084 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx/pbx_config.c')
-rwxr-xr-xpbx/pbx_config.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index d68c5adf4..7f7af1b10 100755
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -903,6 +903,8 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
{
char filename[256];
struct ast_context *c;
+ struct ast_config *cfg;
+ struct ast_variable *v;
int context_header_written;
int incomplete = 0; /* incomplete config write? */
FILE *output;
@@ -942,10 +944,13 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
snprintf(filename, sizeof(filename), "%s/%s",
(char *)ast_config_AST_CONFIG_DIR, config);
+ cfg = ast_load("extensions.conf");
+
/* try to lock contexts list */
if (ast_lock_contexts()) {
ast_cli(fd, "Failed to lock contexts list\n");
ast_mutex_unlock(&save_dialplan_lock);
+ ast_destroy(cfg);
return RESULT_FAILURE;
}
@@ -955,6 +960,7 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
filename);
ast_unlock_contexts();
ast_mutex_unlock(&save_dialplan_lock);
+ ast_destroy(cfg);
return RESULT_FAILURE;
}
@@ -963,6 +969,17 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
static_config ? "yes" : "no",
write_protect_config ? "yes" : "no");
+ if ((v = ast_variable_browse(cfg, "globals"))) {
+ fprintf(output, "[globals]\n");
+ while(v) {
+ fprintf(output, "%s => %s\n", v->name, v->value);
+ v = v->next;
+ }
+ fprintf(output, "\n");
+ }
+
+ ast_destroy(cfg);
+
/* walk all contexts */
c = ast_walk_contexts(NULL);
while (c) {