Commit 04aec5b2 authored by Tor Lillqvist's avatar Tor Lillqvist Committed by Tor Lillqvist

Implement #491549: On Windows, always use the native API for character set

2007-11-26  Tor Lillqvist  <tml@novell.com>

	Implement #491549: On Windows, always use the native API for
	character set conversions instead of GNU libiconv. Almost all
	codesets supported by GNU libiconv exist as Windows codepages.
	One missing feature is the "C99" and "JAVA" pseudo codesets, but I
	doubt that is worth worrying about.
	
	* glib/win_iconv.c: New file. iconv() implementation for
	Windows. Placed in the public domain by Yukihiro Nakadaira
	<yukihiro.nakadaira@gmail.com>. From
	http://yukihiro.nakadaira.googlepages.com/win_iconv.zip, his
	2007-11-17 version.

	* glib/gconvert.c: Include win_iconv.c on Windows.

	* configure.in: Bypass iconv checks on Windows. 


svn path=/trunk/; revision=5937
parent 6fdcc7dd
2007-11-26 Tor Lillqvist <tml@novell.com>
Implement #491549: On Windows, always use the native API for
character set conversions instead of GNU libiconv. Almost all
codesets supported by GNU libiconv exist as Windows codepages.
One missing feature is the "C99" and "JAVA" pseudo codesets, but I
doubt that is worth worrying about.
* glib/win_iconv.c: New file. iconv() implementation for
Windows. Placed in the public domain by Yukihiro Nakadaira
<yukihiro.nakadaira@gmail.com>. From
http://yukihiro.nakadaira.googlepages.com/win_iconv.zip, his
2007-11-17 version.
* glib/gconvert.c: Include win_iconv.c on Windows.
* configure.in: Bypass iconv checks on Windows.
2007-11-25 Tor Lillqvist <tml@novell.com>
* glib/gtestutils.c: Add conditionals for non-Unix. Just g_error()
......
......@@ -376,38 +376,44 @@ dnl ***********************
dnl
dnl We do this before the gettext checks, to avoid distortion
AC_ARG_WITH(libiconv,
[AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
[use the libiconv library])],,
[with_libiconv=maybe])
dnl On Windows we use a native implementation
found_iconv=no
case $with_libiconv in
maybe)
# Check in the C library first
AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
# Check if we have GNU libiconv
if test $found_iconv = "no"; then
if test x"$glib_native_win32" = xyes; then
with_libiconv=native
else
AC_ARG_WITH(libiconv,
[AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
[use the libiconv library])],,
[with_libiconv=maybe])
found_iconv=no
case $with_libiconv in
maybe)
# Check in the C library first
AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
# Check if we have GNU libiconv
if test $found_iconv = "no"; then
AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
fi
# Check if we have a iconv in -liconv, possibly from vendor
if test $found_iconv = "no"; then
AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
fi
;;
no)
AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
;;
gnu|yes)
AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
fi
# Check if we have a iconv in -liconv, possibly from vendor
if test $found_iconv = "no"; then
;;
native)
AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
fi
;;
no)
AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
;;
gnu|yes)
AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
;;
native)
AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
;;
esac
;;
esac
if test "x$found_iconv" = "xno" ; then
AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
if test "x$found_iconv" = "xno" ; then
AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
fi
fi
jm_GLIBC21
......@@ -465,11 +471,13 @@ dnl
dnl Now we are done with gettext checks, figure out ICONV_LIBS
dnl
if test x$with_libiconv != xno ; then
case " $INTLLIBS " in
*[[\ \ ]]-liconv[[\ \ ]]*) ;;
*) ICONV_LIBS="-liconv" ;;
esac
if test x"$glib_native_win32" != xyes; then
if test x$with_libiconv != xno ; then
case " $INTLLIBS " in
*[[\ \ ]]-liconv[[\ \ ]]*) ;;
*) ICONV_LIBS="-liconv" ;;
esac
fi
fi
AC_SUBST(ICONV_LIBS)
......
......@@ -22,13 +22,16 @@
#include "config.h"
#include "glib.h"
#ifndef G_OS_WIN32
#include <iconv.h>
#endif
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "glib.h"
#include "gprintfint.h"
#include "gthreadprivate.h"
#include "gunicode.h"
......@@ -50,6 +53,10 @@
#include "galias.h"
#ifdef G_OS_WIN32
#include "win_iconv.c"
#endif
GQuark
g_convert_error_quark (void)
{
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment