You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2007/04/04 21:18:34 UTC

svn commit: r525584 - in /logging/log4cxx/trunk: src/charsetencoder.cpp tests/src/minimumtestcase.cpp

Author: carnold
Date: Wed Apr  4 12:18:33 2007
New Revision: 525584

URL: http://svn.apache.org/viewvc?view=rev&rev=525584
Log:
LOGCXX-178: Recognize 646 as ASCII, avoid conflict with ERR

Modified:
    logging/log4cxx/trunk/src/charsetencoder.cpp
    logging/log4cxx/trunk/tests/src/minimumtestcase.cpp

Modified: logging/log4cxx/trunk/src/charsetencoder.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/charsetencoder.cpp?view=diff&rev=525584&r1=525583&r2=525584
==============================================================================
--- logging/log4cxx/trunk/src/charsetencoder.cpp (original)
+++ logging/log4cxx/trunk/src/charsetencoder.cpp Wed Apr  4 12:18:33 2007
@@ -22,6 +22,7 @@
 #include <log4cxx/helpers/stringhelper.h>
 #include <log4cxx/helpers/unicodehelper.h>
 #include <log4cxx/private/log4cxx_private.h>
+#include <apr_portable.h>
 
 
 using namespace log4cxx;
@@ -44,11 +45,9 @@
               APRCharsetEncoder(const char* topage) {
 #if LOG4CXX_LOGCHAR_IS_WCHAR
                   const char* frompage = "WCHAR_T";
-#define FROMPAGE "WCHAR_T"
 #endif
 #if LOG4CXX_LOGCHAR_IS_UTF8
                   const char* frompage = "UTF-8";
-#define FROMPAGE "UTF-8"
 #endif
                   apr_status_t stat = apr_pool_create(&pool, NULL);
                   if (stat != APR_SUCCESS) {
@@ -62,7 +61,18 @@
                      if (topage == APR_DEFAULT_CHARSET) {
                          throw IllegalArgumentException("APR_DEFAULT_CHARSET");
                      } else if (topage == APR_LOCALE_CHARSET) {
-                         throw IllegalArgumentException("APRCharsetEncoder(" FROMPAGE ",APR_LOCALE_CHARSET)");
+                         const char* localeEncoding = 
+                            apr_os_locale_encoding(pool);
+                         // Solaris likes returning 646 if nl_langinfo has not been called
+                         if(localeEncoding != NULL && strcmp("646", localeEncoding) == 0) {
+                             stat = apr_xlate_open(&convset,
+                                 "ASCII", 
+                                 frompage,
+                                 pool);
+                         }
+                         if (stat != APR_SUCCESS) {
+                            throw IllegalArgumentException("APR_LOCALE_CHARSET");
+                         } 
                      } else {
                          throw IllegalArgumentException(topage);
                      }

Modified: logging/log4cxx/trunk/tests/src/minimumtestcase.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/tests/src/minimumtestcase.cpp?view=diff&rev=525584&r1=525583&r2=525584
==============================================================================
--- logging/log4cxx/trunk/tests/src/minimumtestcase.cpp (original)
+++ logging/log4cxx/trunk/tests/src/minimumtestcase.cpp Wed Apr  4 12:18:33 2007
@@ -128,8 +128,8 @@
                 // In the lines below, the category names are chosen as an aid in
                 // remembering their level values. In general, the category names
                 // have no bearing to level values.
-                LoggerPtr ERR = Logger::getLogger(LOG4CXX_TEST_STR("ERR"));
-                ERR->setLevel(Level::getError());
+                LoggerPtr ERRlogger = Logger::getLogger(LOG4CXX_TEST_STR("ERR"));
+                ERRlogger->setLevel(Level::getError());
 
                 LoggerPtr INF = Logger::getLogger(LOG4CXX_TEST_STR("INF"));
                 INF->setLevel(Level::INFO);
@@ -150,9 +150,9 @@
                 Pool pool;
 
                 // These should all log.----------------------------
-                LOG4CXX_FATAL(ERR, createMessage(i, pool));
+                LOG4CXX_FATAL(ERRlogger, createMessage(i, pool));
                 i++; //0
-                LOG4CXX_ERROR(ERR, createMessage(i, pool));
+                LOG4CXX_ERROR(ERRlogger, createMessage(i, pool));
                 i++;
 
                 LOG4CXX_FATAL(INF, createMessage(i, pool));
@@ -208,11 +208,11 @@
 
                 // -------------------------------------------------
                 // The following should not log
-                LOG4CXX_WARN(ERR, createMessage(i, pool));
+                LOG4CXX_WARN(ERRlogger, createMessage(i, pool));
                 i++;
-                LOG4CXX_INFO(ERR, createMessage(i, pool));
+                LOG4CXX_INFO(ERRlogger, createMessage(i, pool));
                 i++;
-                LOG4CXX_DEBUG(ERR, createMessage(i, pool));
+                LOG4CXX_DEBUG(ERRlogger, createMessage(i, pool));
                 i++;
 
                 LOG4CXX_DEBUG(INF, createMessage(i, pool));