$NetBSD: patch-ac,v 1.4 2009/12/01 11:18:48 drochner Exp $

--- util.c.orig	2009-08-20 23:57:18.000000000 +0200
+++ util.c
@@ -30,9 +30,9 @@
  */
 
 #include <bluetooth.h>
-#include <bsdxml.h>
 #include <ctype.h>
 #include <errno.h>
+#include <expat.h>
 #include <iconv.h>
 #include <libgen.h>
 #include <limits.h>
@@ -43,6 +43,7 @@
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
+#include <langinfo.h>
 
 #include <readline/readline.h>
 #include <readline/history.h>
@@ -66,26 +67,12 @@ static iconv_t		 locale2utf16be = (iconv
 int
 obexapp_util_locale_init(void)
 {
-	int	one = 1;
 
-	locale = setlocale(LC_CTYPE, "");
+	setlocale(LC_CTYPE, "");
+	locale = nl_langinfo(CODESET);
 	if (locale == NULL)
 		return (-1);
 
-	if (strcmp(locale, "ASCII") == 0 ||
-	    strcmp(locale, "C") == 0 ||
-	    strcmp(locale, "POSIX") == 0 ||
-	    strcmp(locale, "US-ASCII") == 0)
-		locale = "en_US.US-ASCII";
-
-	locale = strchr(locale, '.');
-	if (locale == NULL)
-		return (-1);
-
-	locale ++;
-	if (locale[0] == '\0')
-		return (-1);
-
 	utf16 = (strstr(locale, "UTF-16") != NULL)? 1 : 0;
 
 	/* UTF-8 -> current locale */
@@ -94,7 +81,6 @@ obexapp_util_locale_init(void)
 		return (-1);
 
 	iconv(utf82locale, NULL, NULL, NULL, NULL);
-	iconvctl(utf82locale, ICONV_SET_DISCARD_ILSEQ, &one);
 
 	/* current locale -> UTF-8 */
 	locale2utf8 = iconv_open("UTF-8", locale);
@@ -104,7 +90,6 @@ obexapp_util_locale_init(void)
 	}
 
 	iconv(locale2utf8, NULL, NULL, NULL, NULL);
-	iconvctl(locale2utf8, ICONV_SET_DISCARD_ILSEQ, &one);
 
 	/* UTF-16BE -> current locale */
 	utf16be2locale = iconv_open(locale, "UTF-16BE");
@@ -114,7 +99,6 @@ obexapp_util_locale_init(void)
 	}
 
 	iconv(utf16be2locale, NULL, NULL, NULL, NULL);
-	iconvctl(utf16be2locale, ICONV_SET_DISCARD_ILSEQ, &one);
 
 	/* current locale -> UTF-16BE */
 	locale2utf16be = iconv_open("UTF-16BE", locale);
@@ -124,7 +108,6 @@ obexapp_util_locale_init(void)
 	}
 
 	iconv(locale2utf16be, NULL, NULL, NULL, NULL);
-	iconvctl(locale2utf16be, ICONV_SET_DISCARD_ILSEQ, &one);
 
 	return (0);
 }
