Module: sems
Branch: master
Commit: 407bab0db87d4fea9dc05c8a7f27f7d17183af85
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=407bab0db87d4fea9dc05c8a7f27f7d17183af85

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Fri Jan  3 13:56:44 2014 +0100

dsm:mod_utils: added utils.escapeCRLF($var) and utils.unescapeCRLF($var)

---

 apps/dsm/mods/mod_utils/ModUtils.cpp |   31 +++++++++++++++++++++++++++++++
 apps/dsm/mods/mod_utils/ModUtils.h   |    3 +++
 doc/dsm/mods/Readme.mod_utils.txt    |    7 +++++++
 3 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/apps/dsm/mods/mod_utils/ModUtils.cpp 
b/apps/dsm/mods/mod_utils/ModUtils.cpp
index 6c472d0..987ed79 100644
--- a/apps/dsm/mods/mod_utils/ModUtils.cpp
+++ b/apps/dsm/mods/mod_utils/ModUtils.cpp
@@ -49,6 +49,8 @@ MOD_ACTIONEXPORT_BEGIN(MOD_CLS_NAME) {
   DEF_CMD("utils.sub", SCUSSubAction);
   DEF_CMD("utils.int", SCUIntAction);
   DEF_CMD("utils.splitStringCR", SCUSplitStringAction);
+  DEF_CMD("utils.escapeCRLF", SCUEscapeCRLFAction);
+  DEF_CMD("utils.unescapeCRLF", SCUUnescapeCRLFAction);
   DEF_CMD("utils.playRingTone", SCUPlayRingToneAction);
 
 } MOD_ACTIONEXPORT_END;
@@ -242,7 +244,36 @@ EXEC_ACTION_START(SCUSplitStringAction) {
   }
 } EXEC_ACTION_END;
 
+EXEC_ACTION_START(SCUEscapeCRLFAction) {
+  string varname = arg;
+  if (varname.length() && varname[0]=='$')
+    varname.erase(0,1);
 
+  while (true) {
+    size_t p = sc_sess->var[varname].find("\r\n");
+    if (p==string::npos)
+      break;
+    sc_sess->var[varname].replace(p, 2, "\\r\\n");
+  }
+
+  DBG("escaped: $%s='%s'\n", varname.c_str(), sc_sess->var[varname].c_str());
+} EXEC_ACTION_END;
+
+
+EXEC_ACTION_START(SCUUnescapeCRLFAction) {
+  string varname = arg;
+  if (varname.length() && varname[0]=='$')
+    varname.erase(0,1);
+
+  while (true) {
+    size_t p = sc_sess->var[varname].find("\\r\\n");
+    if (p==string::npos)
+      break;
+    sc_sess->var[varname].replace(p, 4, "\r\n");
+  }
+
+  DBG("unescaped: $%s='%s'\n", varname.c_str(), sc_sess->var[varname].c_str());
+} EXEC_ACTION_END;
 
 
 CONST_ACTION_2P(SCUPlayRingToneAction, ',', true);
diff --git a/apps/dsm/mods/mod_utils/ModUtils.h 
b/apps/dsm/mods/mod_utils/ModUtils.h
index 24311bf..aaf89c7 100644
--- a/apps/dsm/mods/mod_utils/ModUtils.h
+++ b/apps/dsm/mods/mod_utils/ModUtils.h
@@ -46,6 +46,9 @@ DEF_ACTION_2P(SCUSSubAction);
 DEF_ACTION_2P(SCUIntAction);
 DEF_ACTION_2P(SCUSplitStringAction);
 
+DEF_ACTION_1P(SCUEscapeCRLFAction);
+DEF_ACTION_1P(SCUUnescapeCRLFAction);
+
 DEF_ACTION_2P(SCUPlayRingToneAction);
 
 
diff --git a/doc/dsm/mods/Readme.mod_utils.txt 
b/doc/dsm/mods/Readme.mod_utils.txt
index 28f854f..413f670 100644
--- a/doc/dsm/mods/Readme.mod_utils.txt
+++ b/doc/dsm/mods/Readme.mod_utils.txt
@@ -42,6 +42,13 @@ Actions:
     sys.popen($myresult="/bin/ls wav/*");    
     utils.splitStringCR($myresult);
 
+ utils.escapeCRLF($var)
+   replace CRLF (\r\n) in string with escaped CRLF (\\r\\n) 
+
+ utils.unescapeCRLF($var)
+   replace escaped CRLF (\\r\\n) in string with CRLF (\r\n) 
+
+
 utils.playRingTone(length [, on [, off [, f [, f2]]]])
    play a RingTone (ringback tone)
    defaults to length=0 (indefinite), on 1000ms, off 2000ms, f 440Hz, f2 480Hz

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to