Fallback wcscasecmp implementation added
authorAlex Kirhenshtein <alk@netxms.org>
Fri, 19 Jul 2013 17:49:17 +0000 (17:49 +0000)
committerAlex Kirhenshtein <alk@netxms.org>
Fri, 19 Jul 2013 17:49:17 +0000 (17:49 +0000)
configure.ac
src/libnetxms/Makefile.am
src/libnetxms/wcscasecmp.cpp [new file with mode: 0644]

index d48cee7..9160904 100644 (file)
@@ -1622,7 +1622,7 @@ AC_CHECK_SIZEOF(wchar_t,,[
 AC_CHECK_FUNCS([wcslen wcsdup wcsncpy wcstoll wcstoull towupper wcserror wcserror_r])
 AC_CHECK_FUNCS([wfopen fputws putws wopen wstat waccess wgetenv wrename wunlink wremove])
 AC_CHECK_FUNCS([wchdir wmkdir wrmdir wsystem wmkstemp wpopen wctime wchmod])
-AC_CHECK_FUNCS([vwscanf vswscanf vfwscanf])
+AC_CHECK_FUNCS([vwscanf vswscanf vfwscanf wcscasecmp])
 
 if test "x$DISABLE_ICONV" != "xyes"; then
        AC_CHECK_LIB(iconv, libiconv_open,
index aad31a0..eb0038d 100644 (file)
@@ -4,7 +4,7 @@ SOURCES = agent.cpp array.cpp base64.cpp config.cpp crypto.cpp dirw_unix.c \
          nxcp.cpp qsort.c queue.cpp rwlock.cpp scandir.c serial.cpp \
          sha1.cpp string.cpp stringlist.cpp strmap.cpp strmapbase.cpp \
          strtoll.c strtoull.c table.cpp threads.cpp tools.cpp unicode.cpp \
-         uuid.c wcstoll.c wcstoull.c xml.cpp
+         uuid.c wcstoll.c wcstoull.c xml.cpp wcscasecmp.cpp
 
 lib_LTLIBRARIES = libnetxms.la
 
diff --git a/src/libnetxms/wcscasecmp.cpp b/src/libnetxms/wcscasecmp.cpp
new file mode 100644 (file)
index 0000000..1170a5b
--- /dev/null
@@ -0,0 +1,59 @@
+/* 
+** NetXMS - Network Management System
+** Copyright (C) 2013 Raden Solutions
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as published
+** by the Free Software Foundation; either version 3 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**
+**/
+
+#include "libnetxms.h"
+
+#if !(HAVE_WCSCASECMP)
+
+#if !HAVE_WINT_T && !defined(_WIN32)
+typedef int wint_t;
+#endif
+
+int wcscasecmp(const wchar_t *s1, const wchar_t *s2)
+{
+   if (s1 == s2)
+   {
+      return 0;
+   }
+
+   wint_t c1, c2;
+   do
+   {
+      c1 = towlower(*(s1++));
+      c2 = towlower(*(s2++));
+
+      if (c1 == L'\0')
+      {
+         break;
+      }
+   } while (c1 == c2);
+
+   if (c1 == c2)
+   {
+      return 0;
+   }
+   if (c1 < c2)
+   {
+      return -1;
+   }
+   return 1;
+}
+
+#endif   /* !(HAVE_WCSCASECMP) */