$NetBSD: patch-aa,v 1.4 2013/03/14 16:33:15 taca Exp $

Unofficial patch to avoid iconv(GNU or gnu libc) portability problem.
(mb-iconv.patch from http://www.fengoffice.com/web/bugs/view.php?id=6)

--- environment/classes/encoding/EncodingConverter.class.php.orig	2013-02-06 11:30:10.000000000 +0000
+++ environment/classes/encoding/EncodingConverter.class.php
@@ -6,6 +6,16 @@ class EncodingConverter
 	var $_last_err_filename;
 	var $_last_err_line;
 	var $_last_err_func;
+	private static $gnu_iconv = null;
+
+	static function iconv_error($errno, $errstr) {
+		if (preg_match("/Wrong charset/", $errstr) > 0) {
+			self::$gnu_iconv = false;
+			return true;
+		} else {
+			return false;
+		}
+	}
 
 	function _handleError($err, $msg, $errfile, $errline, $errcontext) {
 		$trace = debug_backtrace();
@@ -25,6 +35,19 @@ class EncodingConverter
 	}
 
 	function convert($in_enc, $out_enc, $str, $return_original_on_error = true, $ignore_non_compatible = true) {
+		$mbflag = function_exists("mb_convert_encoding");
+
+		if (!$mbflag && is_null(self::$gnu_iconv)) {
+			$dummy = "a";
+			$ascii = 'us-ascii';
+			$func = set_error_handler("self::iconv_error");
+			$r = iconv($ascii, $ascii . "//ignore", $dummy);
+			restore_error_handler();
+			if ($r == $dummy) {
+				self::$gnu_iconv = true;
+			}
+		}
+
 		$this->_last_err = null;
 		set_error_handler(array(&$this, '_handleError'));
 		
