Commit 9789aefa authored by Martin v. Löwis's avatar Martin v. Löwis

Patch #670715: Universal Unicode Codec for POSIX iconv.

parent afef4eef
......@@ -120,3 +120,9 @@ def search_function(encoding):
# Register the search_function in the Python codec registry
codecs.register(search_function)
# Register iconv_codec lookup function if available
try:
import iconv_codec
except ImportError:
pass
""" Python 'iconv' Codec
Written by Hye-Shik Chang (perky@FreeBSD.org).
Copyright(c) Python Software Foundation, All Rights Reserved. NO WARRANTY.
"""
import _iconv_codec
import codecs
def lookup(enc):
class IconvCodec(_iconv_codec.iconvcodec, codecs.Codec):
encoding = enc
try:
c = IconvCodec()
class IconvStreamReader(IconvCodec, codecs.StreamReader):
__init__ = codecs.StreamReader.__init__
class IconvStreamWriter(IconvCodec, codecs.StreamWriter):
__init__ = codecs.StreamWriter.__init__
return (
c.encode, c.decode,
IconvStreamReader, IconvStreamWriter
)
except ValueError:
return None
codecs.register(lookup)
# ex: ts=8 sts=4 et
......@@ -556,6 +556,7 @@ _expectations = {
test_gdbm
test_gl
test_grp
test_iconv_codec
test_imgfile
test_largefile
test_linuxaudiodev
......@@ -611,6 +612,7 @@ _expectations = {
test_fork1
test_gl
test_grp
test_iconv_codec
test_imgfile
test_largefile
test_linuxaudiodev
......@@ -898,6 +900,7 @@ _expectations = {
test_dl
test_email_codecs
test_gl
test_iconv_codec
test_imgfile
test_largefile
test_linuxaudiodev
......
......@@ -26,6 +26,9 @@ Core and builtins
Extension modules
-----------------
- A new module _iconv_codec has been added, to expose the iconv(3)
library.
- os/posixmodule has grown the sysexits.h constants (EX_OK and friends).
- Fixed broken threadstate swap in readline that could cause fatal
......
This diff is collapsed.
......@@ -614,6 +614,24 @@ class PyBuildExt(build_ext):
exts.append( Extension('nis', ['nismodule.c'],
libraries = libs) )
# Hye-Shik Chang's iconv_codec C interface
iconv_incs = find_file('iconv.h', inc_dirs,
['/usr/local/include', '/usr/pkg/include'])
iconv_libs = find_library_file(self.compiler, 'iconv', lib_dirs,
['/usr/local/lib', '/usr/pkg/lib'])
if (iconv_incs is not None):
if iconv_libs is not None:
iconv_libraries = ['iconv']
else:
iconv_libraries = [] # in libc
exts.append( Extension('_iconv_codec',
['_iconv_codec.c'],
include_dirs = iconv_incs,
library_dirs = iconv_libs,
libraries = iconv_libraries), )
# Curses support, requring the System V version of curses, often
# provided by the ncurses library.
if platform == 'sunos4':
......
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