[prev in list] [next in list] [prev in thread] [next in thread] 

List:       semsdev
Subject:    [Semsdev] r1339 - trunk/apps/dsm
From:       sayer () mail ! berlios ! de
Date:       2009-03-26 17:19:28
Message-ID: 200903261719.n2QHJS4p002851 () sheep ! berlios ! de
[Download RAW message or body]

Author: sayer
Date: 2009-03-26 18:19:27 +0100 (Thu, 26 Mar 2009)
New Revision: 1339

Modified:
   trunk/apps/dsm/DSMCoreModule.cpp
   trunk/apps/dsm/DSMCoreModule.h
Log:
substr function

Modified: trunk/apps/dsm/DSMCoreModule.cpp
===================================================================
--- trunk/apps/dsm/DSMCoreModule.cpp	2009-03-25 19:49:45 UTC (rev 1338)
+++ trunk/apps/dsm/DSMCoreModule.cpp	2009-03-26 17:19:27 UTC (rev 1339)
@@ -75,6 +75,7 @@
 
   DEF_CMD("set", SCSetAction);
   DEF_CMD("append", SCAppendAction);
+  DEF_CMD("substr", SCSubStrAction);
   DEF_CMD("inc", SCIncAction);
   DEF_CMD("log", SCLogAction);
   DEF_CMD("clear", SCClearAction);
@@ -351,6 +352,29 @@
       var_name.c_str(), sc_sess->var[var_name].c_str());
 } EXEC_ACTION_END;
 
+CONST_ACTION_2P(SCSubStrAction,',', false);
+EXEC_ACTION_START(SCSubStrAction) {
+  string var_name = (par1.length() && par1[0] == '$')?
+    par1.substr(1) : par1;
+  unsigned int pos = 0;
+  if (str2i(resolveVars(par2, sess, sc_sess, event_params), pos)) {
+    ERROR("substr length '%s'\n",
+	  resolveVars(par2, sess, sc_sess, event_params).c_str());
+    sc_sess->SET_ERRNO(DSM_ERRNO_UNKNOWN_ARG);
+    return false;
+  }
+  try {
+    sc_sess->var[var_name] = sc_sess->var[var_name].substr(pos);
+  } catch(...) {
+    ERROR("in substr\n");
+    sc_sess->SET_ERRNO(DSM_ERRNO_UNKNOWN_ARG);
+    return false;
+  }
+
+  DBG("$%s now '%s'\n", 
+      var_name.c_str(), sc_sess->var[var_name].c_str());
+} EXEC_ACTION_END;
+
 EXEC_ACTION_START(SCIncAction) {
   string var_name = (arg.length() && arg[0] == '$')?
     arg.substr(1) : arg;

Modified: trunk/apps/dsm/DSMCoreModule.h
===================================================================
--- trunk/apps/dsm/DSMCoreModule.h	2009-03-25 19:49:45 UTC (rev 1338)
+++ trunk/apps/dsm/DSMCoreModule.h	2009-03-26 17:19:27 UTC (rev 1339)
@@ -76,6 +76,7 @@
 
 DEF_ACTION_2P(SCSetAction);
 DEF_ACTION_2P(SCAppendAction);
+DEF_ACTION_2P(SCSubStrAction);
 DEF_ACTION_1P(SCIncAction);
 DEF_ACTION_1P(SCClearAction);
 DEF_ACTION_2P(SCSetTimerAction);

_______________________________________________
Semsdev mailing list
Semsdev@lists.iptel.org
http://lists.iptel.org/mailman/listinfo/semsdev
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic