Fixed problems with default iconv() codepage
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 15 Nov 2006 18:47:35 +0000 (18:47 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 15 Nov 2006 18:47:35 +0000 (18:47 +0000)
configure.ac
include/unicode.h
reconf
src/libnetxms/unicode.cpp
src/server/core/config.cpp
src/server/tools/nxdbmgr/nxdbmgr.cpp

index e9e0f23..b3906ca 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 1.220 2006-11-15 16:45:44 victor Exp $
+# $Id: configure.ac,v 1.221 2006-11-15 18:47:34 victor Exp $
 #
 # Process this file with autoconf to produce a configure script.
 #
 #
 # Process this file with autoconf to produce a configure script.
 #
@@ -775,6 +775,57 @@ AC_RUN_IFELSE(
   [ AC_MSG_RESULT(no) ]
 )
 
   [ AC_MSG_RESULT(no) ]
 )
 
+AC_MSG_CHECKING(whether iconv supports ISO8859-1)
+AC_RUN_IFELSE(
+  [AC_LANG_PROGRAM([
+#if HAVE_ICONV_H
+#include <iconv.h>
+#endif
+     ], [
+     return iconv_open("UTF-8","ISO8859-1")==(iconv_t)(-1);
+     ])
+  ],
+  [ AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_ICONV_ISO8859_1, 1, Define to 1 if iconv supports ISO8859-1)
+  ],
+  [ AC_MSG_RESULT(no) ],
+  [ AC_MSG_RESULT(no) ]
+)
+
+AC_MSG_CHECKING(whether iconv supports ISO-8859-1)
+AC_RUN_IFELSE(
+  [AC_LANG_PROGRAM([
+#if HAVE_ICONV_H
+#include <iconv.h>
+#endif
+     ], [
+     return iconv_open("UTF-8","ISO-8859-1")==(iconv_t)(-1);
+     ])
+  ],
+  [ AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_ICONV_ISO_8859_1, 1, Define to 1 if iconv supports ISO-8859-1)
+  ],
+  [ AC_MSG_RESULT(no) ],
+  [ AC_MSG_RESULT(no) ]
+)
+
+AC_MSG_CHECKING(whether iconv supports ASCII)
+AC_RUN_IFELSE(
+  [AC_LANG_PROGRAM([
+#if HAVE_ICONV_H
+#include <iconv.h>
+#endif
+     ], [
+     return iconv_open("UTF-8","ASCII")==(iconv_t)(-1);
+     ])
+  ],
+  [ AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_ICONV_ASCII, 1, Define to 1 if iconv supports ASCII)
+  ],
+  [ AC_MSG_RESULT(no) ],
+  [ AC_MSG_RESULT(no) ]
+)
+
 AC_MSG_CHECKING(whether iconv supports //IGNORE)
 AC_RUN_IFELSE(
   [AC_LANG_PROGRAM([
 AC_MSG_CHECKING(whether iconv supports //IGNORE)
 AC_RUN_IFELSE(
   [AC_LANG_PROGRAM([
index a110a22..863dabb 100644 (file)
@@ -52,6 +52,8 @@
 
 #endif
 
 
 #endif
 
+#define ICONV_DEFAULT_CODEPAGE "ACP"
+
 #else    /* not _WIN32 */
 
 #if HAVE_WCHAR_H
 #else    /* not _WIN32 */
 
 #if HAVE_WCHAR_H
 #define WC_COMPOSITECHECK  0x00000002
 #define WC_DEFAULTCHAR     0x00000004
 
 #define WC_COMPOSITECHECK  0x00000002
 #define WC_DEFAULTCHAR     0x00000004
 
+// Default codepage for iconv()
+#if HAVE_ICONV_ISO_8859_1
+#define ICONV_DEFAULT_CODEPAGE "ISO-8859-1"
+#elif HAVE_ICONV_ISO8859_1
+#define ICONV_DEFAULT_CODEPAGE "ISO8859-1"
+#elif HAVE_ICONV_ASCII
+#define ICONV_DEFAULT_CODEPAGE "ASCII"
+#else
+#define ICONV_DEFAULT_CODEPAGE ""
+#endif
+
 #endif /* _WIN32 */
 
 
 #endif /* _WIN32 */
 
 
diff --git a/reconf b/reconf
index c2936c3..efdcb0f 100644 (file)
--- a/reconf
+++ b/reconf
@@ -50,4 +50,5 @@ echo "- autoheader." &&
 $AUTOHEADER &&
 echo "- automake." &&
 $AUTOMAKE -a &&
 $AUTOHEADER &&
 echo "- automake." &&
 $AUTOMAKE -a &&
+chmod 755 configure &&
 exit $?
 exit $?
index b24a491..9ee2aed 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: unicode.cpp,v 1.16 2006-10-13 09:44:23 victor Exp $ */
+/* $Id: unicode.cpp,v 1.17 2006-11-15 18:47:35 victor Exp $ */
 /*
 ** NetXMS - Network Management System
 ** Copyright (C) 2003, 2004, 2005, 2006 Victor Kirhenshtein
 /*
 ** NetXMS - Network Management System
 ** Copyright (C) 2003, 2004, 2005, 2006 Victor Kirhenshtein
@@ -28,7 +28,7 @@
 // Static data
 //
 
 // Static data
 //
 
-static char m_cpDefault[MAX_CODEPAGE_LEN] = "";
+static char m_cpDefault[MAX_CODEPAGE_LEN] = ICONV_DEFAULT_CODEPAGE;
 
 
 #ifndef _WIN32
 
 
 #ifndef _WIN32
index 691d9df..15c0fb1 100644 (file)
@@ -27,7 +27,7 @@
 // Static data
 //
 
 // Static data
 //
 
-static TCHAR m_szCodePage[256];
+static TCHAR m_szCodePage[256] = ICONV_DEFAULT_CODEPAGE;
 
 
 //
 
 
 //
index 45140f7..ad7d06a 100644 (file)
@@ -50,7 +50,7 @@ TCHAR *g_pszSqlType[5][2] =
 // Static data
 //
 
 // Static data
 //
 
-static TCHAR m_szCodePage[MAX_PATH] = "";
+static TCHAR m_szCodePage[MAX_PATH] = ICONV_DEFAULT_CODEPAGE;
 static NX_CFG_TEMPLATE m_cfgTemplate[] =
 {
    { "CodePage", CT_STRING, 0, 0, MAX_PATH, 0, m_szCodePage },
 static NX_CFG_TEMPLATE m_cfgTemplate[] =
 {
    { "CodePage", CT_STRING, 0, 0, MAX_PATH, 0, m_szCodePage },