Module: kamailio
Branch: master
Commit: 7a88baf9b0dbd4e46557278eaaaf755a5f4350a9
URL: 
https://github.com/kamailio/kamailio/commit/7a88baf9b0dbd4e46557278eaaaf755a5f4350a9

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2020-11-10T15:56:00+01:00

core: evalute define expressions in config for --cfg-print option

---

Modified: src/core/cfg.lex

---

Diff:  
https://github.com/kamailio/kamailio/commit/7a88baf9b0dbd4e46557278eaaaf755a5f4350a9.diff
Patch: 
https://github.com/kamailio/kamailio/commit/7a88baf9b0dbd4e46557278eaaaf755a5f4350a9.patch

---

diff --git a/src/core/cfg.lex b/src/core/cfg.lex
index 76f4ba0491..f497122a78 100644
--- a/src/core/cfg.lex
+++ b/src/core/cfg.lex
@@ -119,6 +119,7 @@
        static void pp_ifdef();
        static void pp_else();
        static void pp_endif();
+       static void ksr_print_cfg_part(char *text);
 
 %}
 
@@ -1283,32 +1284,55 @@ IMPORTFILE      "import_file"
                                                                                
        }
                                                                                
        sr_cfg_compat=SR_COMPAT_MAX;}
 
-<INITIAL>{PREP_START}{DEFINE}{EAT_ABLE}+       {       count(); 
pp_define_set_type(0);
+<INITIAL,CFGPRINTMODE>{PREP_START}{DEFINE}{EAT_ABLE}+  {       count();
+                                                                               
        ksr_print_cfg_part(yytext);
+                                                                               
        pp_define_set_type(0);
                                                                                
        state = DEFINE_S; BEGIN(DEFINE_ID); }
-<INITIAL>{PREP_START}{TRYDEF}{EAT_ABLE}+       {       count(); 
pp_define_set_type(1);
+<INITIAL,CFGPRINTMODE>{PREP_START}{TRYDEF}{EAT_ABLE}+  {       count();
+                                                                               
        ksr_print_cfg_part(yytext);
+                                                                               
        pp_define_set_type(1);
                                                                                
        state = DEFINE_S; BEGIN(DEFINE_ID); }
-<INITIAL>{PREP_START}{REDEF}{EAT_ABLE}+        {       count(); 
pp_define_set_type(2);
+<INITIAL,CFGPRINTMODE>{PREP_START}{REDEF}{EAT_ABLE}+   {       count();
+                                                                               
        ksr_print_cfg_part(yytext);
+                                                                               
        pp_define_set_type(2);
                                                                                
        state = DEFINE_S; BEGIN(DEFINE_ID); }
 <DEFINE_ID>{ID}{MINUS}          {      count();
+                                                                       
ksr_print_cfg_part(yytext);
                                                                        LM_CRIT(
                                                                                
"error at %s line %d: '-' not allowed\n",
                                                                                
(finame)?finame:"cfg", line);
                                                                        
exit(-1);
                                                                }
 <DEFINE_ID>{ID}                 {      count();
+                                                                       
ksr_print_cfg_part(yytext);
                                                                        if 
(pp_define(yyleng, yytext)) return 1;
                                                                        state = 
DEFINE_EOL_S; BEGIN(DEFINE_EOL); }
-<DEFINE_EOL>{EAT_ABLE}                 {       count(); }
+<DEFINE_EOL>{EAT_ABLE}                 {       count(); 
ksr_print_cfg_part(yytext); }
 <DEFINE_EOL>{CR}                               {       count();
-                                                                       state = 
INITIAL; BEGIN(INITIAL); }
+                                                                       
ksr_print_cfg_part(yytext);
+                                                                       state = 
INITIAL;
+                                                                       
if(ksr_cfg_print_mode == 1) {
+                                                                               
BEGIN(CFGPRINTMODE);
+                                                                       } else {
+                                                                               
BEGIN(INITIAL);
+                                                                       }
+                                                               }
 <DEFINE_EOL>.                   {      count();
+                                                                       
ksr_print_cfg_part(yytext);
                                                                        
addstr(&s_buf, yytext, yyleng);
                                                                        state = 
DEFINE_DATA_S; BEGIN(DEFINE_DATA); }
-<DEFINE_DATA>\\{CR}            {       count(); } /* eat the escaped CR */
+<DEFINE_DATA>\\{CR}            {       count(); ksr_print_cfg_part(yytext); } 
/* eat the escaped CR */
 <DEFINE_DATA>{CR}              {       count();
+                                                       
ksr_print_cfg_part(yytext);
                                                        if 
(pp_define_set(strlen(s_buf.s), s_buf.s)) return 1;
                                                        memset(&s_buf, 0, 
sizeof(s_buf));
-                                                       state = INITIAL; 
BEGIN(INITIAL); }
+                                                       state = INITIAL;
+                                                       if(ksr_cfg_print_mode 
== 1) {
+                                                               
BEGIN(CFGPRINTMODE);
+                                                       } else {
+                                                               BEGIN(INITIAL);
+                                                       }
+                                               }
 <DEFINE_DATA>.          {      count();
                                                        addstr(&s_buf, yytext, 
yyleng); }
 
@@ -1454,6 +1478,12 @@ IMPORTFILE      "import_file"
 
 %%
 
+static void ksr_print_cfg_part(char *text)
+{
+       if(ksr_cfg_print_mode == 1) {
+               printf("%s", text);
+       }
+}
 
 static char* addchar(struct str_buf* dst, char c)
 {


_______________________________________________
Kamailio (SER) - Development Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to