diff --git a/src/core/cfg.lex b/src/core/cfg.lex index 2b90fbb66a0..ff8096d9f23 100644 --- a/src/core/cfg.lex +++ b/src/core/cfg.lex @@ -1337,7 +1337,7 @@ IMPORTFILE "import_file" \\{CR} { count(); ksr_cfg_print_part(yytext); } /* eat the escaped CR */ {CR} { count(); ksr_cfg_print_part(yytext); - if (pp_define_set(strlen(s_buf.s), s_buf.s)) return 1; + if (pp_define_set(strlen(s_buf.s), s_buf.s, KSR_PPDEF_NORMAL)) return 1; memset(&s_buf, 0, sizeof(s_buf)); state = INITIAL; ksr_cfg_print_initial_state(); @@ -2007,7 +2007,7 @@ int pp_define(int len, const char *text) return 0; } -int pp_define_set(int len, char *text) +int pp_define_set(int len, char *text, int mode) { int ppos; @@ -2090,7 +2090,7 @@ int pp_define_env(const char *text, int len) LM_ERR("cannot set define name [%s]\n", (char*)text); return -1; } - if(pp_define_set(defvalue.len, defvalue.s)<0) { + if(pp_define_set(defvalue.len, defvalue.s, KSR_PPDEF_NORMAL)<0) { LM_ERR("cannot set define value [%s]\n", (char*)text); return -1; } diff --git a/src/core/ppcfg.c b/src/core/ppcfg.c index 627402ba666..a5aa1d3e28a 100644 --- a/src/core/ppcfg.c +++ b/src/core/ppcfg.c @@ -143,20 +143,14 @@ int pp_substdef_add(char *data, int mode) LM_ERR("cannot set define name\n"); goto error; } - if(mode==1) { - /* define the value enclosed in double quotes */ - *(defvalue.s-1) = '"'; - defvalue.s[defvalue.len] = '"'; - defvalue.s--; - defvalue.len += 2; - } if(memchr(defvalue.s, '$', defvalue.len) != NULL) { fmsg = faked_msg_get_next(); if(pv_eval_str(fmsg, &newval, &defvalue)>=0) { defvalue = newval; } } - if(pp_define_set(defvalue.len, defvalue.s)<0) { + if(pp_define_set(defvalue.len, defvalue.s, + (mode==1)?KSR_PPDEF_QUOTED:KSR_PPDEF_NORMAL)<0) { LM_ERR("cannot set define value\n"); goto error; } diff --git a/src/core/ppcfg.h b/src/core/ppcfg.h index 70627268b6f..17b19380bc6 100644 --- a/src/core/ppcfg.h +++ b/src/core/ppcfg.h @@ -25,6 +25,9 @@ #include "str.h" +#define KSR_PPDEF_NORMAL (0) /* define normal value */ +#define KSR_PPDEF_QUOTED (1<<0) /* define quoted value */ + typedef struct ksr_ppdefine { str name; str value; @@ -39,7 +42,7 @@ int pp_substdef_add(char *data, int mode); int pp_subst_run(char **data); int pp_define(int len, const char *text); -int pp_define_set(int len, char *text); +int pp_define_set(int len, char *text, int mode); int pp_define_set_type(int type); str *pp_define_get(int len, const char * text); int pp_define_env(const char * text, int len); diff --git a/src/main.c b/src/main.c index 71a024d5bbf..a391f57afba 100644 --- a/src/main.c +++ b/src/main.c @@ -2264,7 +2264,7 @@ int main(int argc, char** argv) } if(p) { p++; - if(pp_define_set(strlen(p), p)<0) { + if(pp_define_set(strlen(p), p, KSR_PPDEF_NORMAL)<0) { fprintf(stderr, "error at define value: -A %s\n", optarg); goto error;