diff options
Diffstat (limited to 'pbx.c')
-rw-r--r-- | pbx.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -890,7 +890,7 @@ static char *substring(const char *value, int offset, int length, char *workspac void pbx_retrieve_variable(struct ast_channel *c, const char *var, char **ret, char *workspace, int workspacelen, struct varshead *headp) { const char not_found = '\0'; - char tmpvar[80]; + char *tmpvar; const char *s; /* the result */ int offset, length; int i, need_substring; @@ -904,7 +904,7 @@ void pbx_retrieve_variable(struct ast_channel *c, const char *var, char **ret, c * Then if called directly, we might need to run substring() on the result; * remember this for later in 'need_substring', 'offset' and 'length' */ - ast_copy_string(tmpvar, var, sizeof(tmpvar)); /* parse_variable_name modifies the string */ + tmpvar = ast_strdupa(var); /* parse_variable_name modifies the string */ need_substring = parse_variable_name(tmpvar, &offset, &length, &i /* ignored */); /* @@ -960,6 +960,8 @@ void pbx_retrieve_variable(struct ast_channel *c, const char *var, char **ret, c if (!strcmp(var, "EPOCH")) { snprintf(workspace, workspacelen, "%u",(int)time(NULL)); s = workspace; + } else if (!strcmp(var, "SYSTEMNAME")) { + ast_copy_string(workspace, ast_config_AST_SYSTEM_NAME, workspacelen); } } /* if not found, look into chanvars or global vars */ |