agent: added support for multibyte string parameters in SendTrap
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 16 Jun 2016 10:21:36 +0000 (13:21 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 16 Jun 2016 10:21:36 +0000 (13:21 +0300)
src/agent/core/trap.cpp

index bd8e28d..77e5b9c 100644 (file)
@@ -133,6 +133,7 @@ void SendTrap(UINT32 dwEventCode, const TCHAR *eventName, int iNumArgs, TCHAR **
  * pszFormat   - Parameter format string, each parameter represented by one character.
  *    The following format characters can be used:
  *        s - String
+ *        m - Multibyte (non-UNICODE) string
  *        d - Decimal integer
  *        x - Hex integer
  *        a - IP address
@@ -156,6 +157,9 @@ void SendTrap(UINT32 dwEventCode, const TCHAR *eventName, const char *pszFormat,
                                if (ppArgList[i] == NULL)
                                        ppArgList[i] = (TCHAR *)_T("");
             break;
+         case 'm':
+            ppArgList[i] = WideStringFromMBString(va_arg(args, char *));
+            break;
          case 'd':
             ppArgList[i] = (TCHAR *)malloc(16 * sizeof(TCHAR));   //
             _sntprintf(ppArgList[i], 16, _T("%d"), va_arg(args, LONG)); //
@@ -188,7 +192,8 @@ void SendTrap(UINT32 dwEventCode, const TCHAR *eventName, const char *pszFormat,
    for(i = 0; i < iNumArgs; i++)
       if ((pszFormat[i] == 'd') || (pszFormat[i] == 'x') ||
           (pszFormat[i] == 'D') || (pszFormat[i] == 'X') ||
-          (pszFormat[i] == 'i') || (pszFormat[i] == 'a'))
+          (pszFormat[i] == 'i') || (pszFormat[i] == 'a') ||
+          (pszFormat[i] == 'm'))
          free(ppArgList[i]);
 
 }