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
