fixed Windows build issues
authorVictor Kirhenshtein <victor@netxms.org>
Tue, 3 Oct 2017 10:48:12 +0000 (13:48 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Tue, 3 Oct 2017 10:48:12 +0000 (13:48 +0300)
20 files changed:
include/nms_common.h
include/nms_util.h
src/agent/subagents/mongodb/mongodb_subagent.h
src/agent/subagents/winnt/procinfo.cpp
src/db/dbdrv/mariadb/mariadbdrv.h
src/db/dbdrv/oracle/oracledrv.h
src/db/dbdrv/pgsql/pgsqldrv.h
src/db/dbdrv/sqlite/sqlite.cpp
src/db/dbdrv/sqlite/sqlitedrv.h
src/jansson/jansson_private.h
src/libnetxms/libnetxms.vcproj
src/libnetxms/rwlock.cpp
src/libnetxms/serial.cpp
src/libnetxms/uuid.cpp
src/libnxsl/lexer.cpp
src/libnxsl/libnxsl.h
src/libnxsl/main.cpp
src/libnxsl/vm.cpp
src/server/core/radius.cpp
src/server/core/session.cpp

index c6b84d9..01f0793 100644 (file)
 #endif
 #endif
 
+// prevent defining min and max macros in Windows headers
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
 #endif   /* _WIN32 */
 
 #if HAVE_JEMALLOC_JEMALLOC_H
index 3824c14..ac209c8 100644 (file)
@@ -617,8 +617,8 @@ public:
 
    String substring(size_t start, ssize_t len) const;
        TCHAR *substring(size_t start, ssize_t len, TCHAR *buffer) const;
-       String left(size_t len) const { return substring(0, static_cast<size_t>(len)); }
-   String right(size_t len) const { return substring((m_length > len) ? m_length - len : 0, static_cast<size_t>(len)); }
+       String left(size_t len) const { return substring(0, static_cast<ssize_t>(len)); }
+   String right(size_t len) const { return substring((m_length > len) ? m_length - len : 0, static_cast<ssize_t>(len)); }
 
    StringList *split(const TCHAR *separator) const;
 
index 79fff7b..88bb807 100644 (file)
@@ -25,9 +25,6 @@
 #include <nms_util.h>
 #include <nms_agent.h>
 
-#undef min
-#undef max
-
 //mongodb
 #include <mongoc.h>
 #include <bson.h>
index 44fc58d..29c0758 100644 (file)
@@ -121,9 +121,9 @@ static unsigned __int64 GetProcessAttribute(HANDLE hProcess, int attr, int type,
    switch(type)
    {
       case INFOTYPE_MIN:
-         return min(lastValue, value);
+         return std::min(lastValue, value);
       case INFOTYPE_MAX:
-         return max(lastValue, value);
+         return std::max(lastValue, value);
       case INFOTYPE_AVG:
          return (lastValue * (count - 1) + value) / count;
       case INFOTYPE_SUM:
index 5201bb9..8e4d09f 100644 (file)
 #define _WIN32_WINNT 0x0502
 #endif
 
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
 #define _CRT_NONSTDC_NO_WARNINGS
 
 #include <winsock2.h>
index 5b555f5..ae5371d 100644 (file)
 #define _WIN32_WINNT 0x0502
 #endif
 
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
 #include <winsock2.h>
 #include <windows.h>
 #define EXPORT __declspec(dllexport)
index b9fc40b..7a35e1a 100644 (file)
 #define _WIN32_WINNT 0x0502
 #endif
 
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
 #include <winsock2.h>
 #include <windows.h>
 #define EXPORT __declspec(dllexport)
index d130a41..37690cc 100644 (file)
@@ -348,37 +348,37 @@ extern "C" DWORD EXPORT DrvQuery(SQLITE_CONN *pConn, WCHAR *pwszQuery, WCHAR *er
 /**
  * SELECT callback
  */
-static int SelectCallback(void *pArg, int nCols, char **ppszData, char **ppszNames)
+static int SelectCallback(void *arg, int nCols, char **ppszData, char **ppszNames)
 {
    int i, nPos, nMaxCol;
 
-   if (((SQLITE_RESULT *)pArg)->nCols == 0)
+   if (static_cast<SQLITE_RESULT*>(arg)->nCols == 0)
    {
-      ((SQLITE_RESULT *)pArg)->nCols = nCols;
+      static_cast<SQLITE_RESULT*>(arg)->nCols = nCols;
       nMaxCol = nCols;
    }
    else
    {
-      nMaxCol = std::min(((SQLITE_RESULT *)pArg)->nCols, nCols);
+      nMaxCol = std::min(static_cast<SQLITE_RESULT*>(arg)->nCols, nCols);
    }
 
        // Store column names
-       if ((((SQLITE_RESULT *)pArg)->ppszNames == NULL) && (nCols > 0) && (ppszNames != NULL))
+       if ((static_cast<SQLITE_RESULT*>(arg)->ppszNames == NULL) && (nCols > 0) && (ppszNames != NULL))
        {
-               ((SQLITE_RESULT *)pArg)->ppszNames = (char **)malloc(sizeof(char *) * nCols);
+               static_cast<SQLITE_RESULT*>(arg)->ppszNames = (char **)malloc(sizeof(char *) * nCols);
                for(i = 0; i < nCols; i++)
-                       ((SQLITE_RESULT *)pArg)->ppszNames[i] = strdup(ppszNames[i]);
+                       static_cast<SQLITE_RESULT*>(arg)->ppszNames[i] = strdup(ppszNames[i]);
        }
 
-   nPos = ((SQLITE_RESULT *)pArg)->nRows * ((SQLITE_RESULT *)pArg)->nCols;
-   ((SQLITE_RESULT *)pArg)->nRows++;
-   ((SQLITE_RESULT *)pArg)->ppszData = (char **)realloc(((SQLITE_RESULT *)pArg)->ppszData,
-         sizeof(char *) * ((SQLITE_RESULT *)pArg)->nCols * ((SQLITE_RESULT *)pArg)->nRows);
+   nPos = static_cast<SQLITE_RESULT*>(arg)->nRows * static_cast<SQLITE_RESULT*>(arg)->nCols;
+   static_cast<SQLITE_RESULT*>(arg)->nRows++;
+   static_cast<SQLITE_RESULT*>(arg)->ppszData = (char **)realloc(static_cast<SQLITE_RESULT*>(arg)->ppszData,
+         sizeof(char *) * static_cast<SQLITE_RESULT*>(arg)->nCols * static_cast<SQLITE_RESULT*>(arg)->nRows);
 
    for(i = 0; i < nMaxCol; i++, nPos++)
-      ((SQLITE_RESULT *)pArg)->ppszData[nPos] = strdup(CHECK_NULL_EX_A(ppszData[i]));
-   for(; i < ((SQLITE_RESULT *)pArg)->nCols; i++, nPos++)
-      ((SQLITE_RESULT *)pArg)->ppszData[nPos] = strdup("");
+      static_cast<SQLITE_RESULT*>(arg)->ppszData[nPos] = strdup(CHECK_NULL_EX_A(ppszData[i]));
+   for(; i < static_cast<SQLITE_RESULT*>(arg)->nCols; i++, nPos++)
+      static_cast<SQLITE_RESULT*>(arg)->ppszData[nPos] = strdup("");
    return 0;
 }
 
index b7d7884..100a23a 100644 (file)
 #define _WIN32_WINNT 0x0502
 #endif
 
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
 #include <winsock2.h>
 #include <windows.h>
 #define EXPORT __declspec(dllexport)
index 403b53a..1be7faa 100644 (file)
 #define container_of(ptr_, type_, member_)  \
     ((type_ *)((char *)ptr_ - offsetof(type_, member_)))
 
-/* On some platforms, max() may already be defined */
-#ifndef max
-#define max(a, b)  ((a) > (b) ? (a) : (b))
-#endif
-
 /* va_copy is a C99 feature. In C89 implementations, it's sometimes
    available as __va_copy. If not, memcpy() should do the trick. */
 #ifndef va_copy
index 416275f..b3c577d 100644 (file)
                                >
                        </File>
                        <File
+                               RelativePath=".\socket_listener.cpp"
+                               >
+                       </File>
+                       <File
                                RelativePath=".\spoll.cpp"
                                >
                        </File>
index 5a98fab..e8a4d13 100644 (file)
@@ -118,7 +118,7 @@ BOOL LIBNETXMS_EXPORTABLE RWLockReadLock(RWLOCK hLock, UINT32 dwTimeOut)
          {
             if (dwTimeOut != INFINITE)
             {
-               dwTimeOut -= min(dwElapsed, dwTimeOut);
+               dwTimeOut -= std::min(dwElapsed, dwTimeOut);
             }
          }
       }
@@ -224,7 +224,7 @@ BOOL LIBNETXMS_EXPORTABLE RWLockWriteLock(RWLOCK hLock, UINT32 dwTimeOut)
          {
             if (dwTimeOut != INFINITE)
             {
-               dwTimeOut -= min(dwElapsed, dwTimeOut);
+               dwTimeOut -= std::min(dwElapsed, dwTimeOut);
             }
          }
       }
index 5bf4384..051ff20 100644 (file)
@@ -368,7 +368,7 @@ int Serial::read(char *pBuff, int nSize)
          if (stat.cbInQue > 0)
          {
             // Read rest of buffered data
-               if (ReadFile(m_hPort, &pBuff[1], min(stat.cbInQue, (DWORD)nSize - 1), &nDone, NULL))
+            if (ReadFile(m_hPort, &pBuff[1], std::min(stat.cbInQue, (DWORD)nSize - 1), &nDone, NULL))
             {
                nRet += (int)nDone;
             }
index c2283d9..cb8a892 100644 (file)
@@ -357,10 +357,7 @@ static int get_node_id(unsigned char *node_id)
  * just sizeof(struct ifreq)
  */
 #ifdef HAVE_SA_LEN
-#ifndef max
-#define max(a,b) ((a) > (b) ? (a) : (b))
-#endif
-#define ifreq_size(i) max(sizeof(struct ifreq),\
+#define ifreq_size(i) std::max(sizeof(struct ifreq),\
      sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
 #else
 #define ifreq_size(i) sizeof(struct ifreq)
index 64c7a38..9eff23a 100644 (file)
@@ -59,7 +59,7 @@ int NXSL_Lexer::lexerInput(char *pBuffer, int nMaxSize)
 
    if (m_nSourcePos < m_nSourceSize)
    {
-      nBytes = min(nMaxSize, m_nSourceSize - m_nSourcePos);
+      nBytes = std::min(nMaxSize, m_nSourceSize - m_nSourcePos);
       memcpy(pBuffer, &m_pszSourceCode[m_nSourcePos], nBytes);
       m_nSourcePos += nBytes;
    }
index 9c6434e..65a8061 100644 (file)
 #include <nxsl.h>
 #include <nxqueue.h>
 
-#ifndef min
-#define min(a, b) ((a) < (b) ? (a) : (b))
-#endif
-#ifndef max
-#define max(a, b) ((a) > (b) ? (a) : (b))
-#endif
-
 union YYSTYPE;
 typedef void *yyscan_t;
 
index b18f2fd..f8b4eca 100644 (file)
 #include "libnxsl.h"
 
 /**
- * For unknown reasons, min() becames undefined on Linux, despite the fact
- * that it is defined in nms_common.h
- */
-#ifndef min
-#define min(a, b) ((a) < (b) ? (a) : (b))
-#endif
-
-/**
  * Interface to compiler
  */
 NXSL_Program LIBNXSL_EXPORTABLE *NXSLCompile(const TCHAR *pszSource, TCHAR *pszError, int nBufSize, int *errorLine)
@@ -94,7 +86,7 @@ TCHAR LIBNXSL_EXPORTABLE *NXSLLoadFile(const TCHAR *pszFileName, UINT32 *pdwFile
             *pdwFileSize = fs.st_size;
             for(iBufPos = 0; iBufPos < fs.st_size; iBufPos += iBytesRead)
             {
-               iNumBytes = min(16384, fs.st_size - iBufPos);
+               iNumBytes = std::min(16384, (int)fs.st_size - iBufPos);
                if ((iBytesRead = _read(fd, &pBuffer[iBufPos], iNumBytes)) < 0)
                {
                   free(pBuffer);
index 9a77562..8b125d6 100644 (file)
@@ -124,7 +124,7 @@ static int SelectResultType(int nType1, int nType2, int nOp)
             else if (nType2 >= NXSL_DT_UINT32)
                nType2 -= 2;
          }
-         nType = max(nType1, nType2);
+         nType = std::max(nType1, nType2);
       }
    }
    return nType;
@@ -1903,7 +1903,7 @@ void NXSL_VM::doUnaryOperation(int nOpCode)
  */
 void NXSL_VM::relocateCode(UINT32 dwStart, UINT32 dwLen, UINT32 dwShift)
 {
-   UINT32 dwLast = min(dwStart + dwLen, (UINT32)m_instructionSet->size());
+   UINT32 dwLast = std::min(dwStart + dwLen, (UINT32)m_instructionSet->size());
    for(UINT32 i = dwStart; i < dwLast; i++)
        {
       NXSL_Instruction *instr = m_instructionSet->get(i);
index db245e6..62322e2 100644 (file)
@@ -696,7 +696,7 @@ static int DoRadiusAuth(const char *login, const char *passwd, bool useSecondary
        // User name
        vp = paircreate(PW_USER_NAME, PW_TYPE_STRING, "User-Name");
        strncpy(vp->strvalue, login, AUTH_STRING_LEN);
-       vp->length = min((int)strlen(login), AUTH_STRING_LEN);
+   vp->length = std::min((int)strlen(login), AUTH_STRING_LEN);
        pairadd(&req, vp);
 
    char authMethod[16];
index f596238..ac49a79 100644 (file)
 #include "zeromq.h"
 #endif
 
-#ifndef min
-#define min(a,b) ((a) < (b) ? (a) : (b))
-#endif
-
 // WARNING! this hack works only for d2i_X509(); be careful when adding new code
 #ifdef OPENSSL_CONST
 # undef OPENSSL_CONST