I'm re-sending this case due to that, including mailer failures,
sac.sfbay
wasn't operating properly last week.
The timer has been extended from 5/14 (Fri) to 5/17 (Mon).
Ienup
-------- Original Message --------
Subject: Libc iconv enhancement [PSARC/2010/160 FastTrack timeout
05/14/2010]
Date: Fri, 07 May 2010 09:50:16 -0700
From: Ienup Sung
Organization: Oracle Corporation
To: PSARC-ext
CC: i18n-discuss
Template Version: @(#)sac_nextcase 1.70 03/30/10 SMI
This information is Copyright (c) 2010, Oracle and/or its affiliates.
All rights
reserved.
1. Introduction
1.1. Project/Component Working Name:
Libc iconv enhancement
1.2. Name of Document Author/Supplier:
Author: Ienup Sung
1.3 Date of This Document:
07 May, 2010
4. Technical Description
OVERVIEW
This project extends the current iconv API framework at libc so that
it will
be compatible with GNU libiconv. It also adds a few additional Solaris
specific
features such as iconvstr(3C) and additional iconv code conversion
behaviors on
non-identical and illegal byte sequences as described at below:
- iconv_open(3C) will understand and properly handle "" (i.e., empty
string),
"char", and "wchar_t" as possible values for fromcode and tocode
arguments as
shown with change bars at [2] and also described in [3].
- iconv_open(3C) will parse fromcode and tocode arguments, understand,
and
properly handle transliteration and code conversion behavior
modification
requests when one or more of the following indicators are appended to
the names pointed to by the arguments as described with change bars
at [2] and also described in [3]:
"//ILLEGAL_DISCARD"
"//ILLEGAL_REPLACE_HEX"
"//ILLEGAL_RESTORE_HEX"
"//NON_IDENTICAL_DISCARD"
"//NON_IDENTICAL_REPLACE_HEX"
"//NON_IDENTICAL_RESTORE_HEX"
"//NON_IDENTICAL_TRANSLITERATE"
"//IGNORE" (An alias to
"//NON_IDENTICAL_DISCARD//ILLEGAL_DISCARD".)
"//REPLACE_HEX" (An alias to
"//NON_IDENTICAL_REPLACE_HEX//ILLEGAL_REPLACE_HEX".)
"//RESTORE_HEX" (An alias to
"//NON_IDENTICAL_RESTORE_HEX//ILLEGAL_RESTORE_HEX".)
"//TRANSLIT" (An alias to "//NON_IDENTICAL_TRANSLITERATE".)
The "//IGNORE" and the "//TRANSLIT" are primarily provided for GNU
libiconv
compatibility.
- The current path-through iconv tocode and fromcode names will go
through
alias matching mechanism so that the path-through iconvs will also
recognize
and support alias names. (As an example, iconv_open("8859-1",
"ISO-8859-1")
will also activate the path-through iconv code conversion unless
there is
a corresponding iconv code conversion module in the current system.)
- iconvctl(3C) will be added as a new function with some additional
Solaris
extensions as described in [2] and [3]. This is also to be
compatible with
the same GNU libiconv API.
- iconvstr(3C) will be added as a new function as described in [2] and
[3].
This is to be compatible with the kernel iconv framework and, in
particular,
kiconvstr(9F) [10] and also to provide a string-based code
conversion
scheme in addition to the current buffer-based code conversion
scheme of
iconv(3C). The main focus of the function at this point is to be
compatible
with kiconvstr(9F).
To support the above, we will add three more Contracted Consolidation
Private
interfaces defined between libc (owned by ON) and iconv code
conversion shared
object modules (owned by G11N mostly) as described in [3] and [4]:
- _icv_open_attr()
- _icv_iconvctl()
- _icv_iconvstr()
Without any modifications, existing iconv code conversion shared object
modules and geniconvtbl binary table driven iconv code conversions
will still
be supported as they are and be compatible with the new and enhanced
iconv
framework; they will just not provide the new functionalities
specified in
this spec.
To provide the new functionalities mentioned in this spec, iconv code
conversion shared object modules and geniconvtbl binary tables must be
updated
to supply the necessary changes as specified in [2] and [3].
Once the case is approved by PSARC, the project team will also seek
the approvals on the [4] from the responsible engineering managers of
the related parties.
As a side note, we will do follow-up projects that will update the
existing
iconv code conversion shared object modules and geniconvtbl-based
binary tables
and also add necessary iconv code conversions and name aliases to be more
compatible with other platforms and systems in terms of code conversion
coverage and support of additional codeset/charset names.
Lastly, there are iconv_open_into(3C) API and also some extra features
in iconv(1) CLI from GNU libiconv that are not included in this
project at this
time. They are planned to be done as a future project or two in near
future
as necessary.
INTERFACE STABILITY AND RELEASE BINDING
There is no notable interface imported. Exported interfaces are:
Interface Stability Note
--------- --------- ----
iconv_open(3C), Committed [2]
iconv(3C),
iconvctl(3C),
iconvstr(3C),
iconv.h(3HEAD),
geniconvtbl(4)
_icv_open_attr(), Contracted [3], [4]
_icv_iconvctl(), Consolidation
_icv_iconvstr() Private
This project seeks Micro/Patch release binding.
REFERENCES
[1] Related CRs:
6803313 Solaris iconv does not support transliteration (Rails
need
transliteration to work on Solaris)
6912982 iconv_open() should allow an empty string / "" / as
any argument
6913721 alias supported is wanted for pass-through iconv
tocode and
fromcode names
Bug 11957 - iconv doesn't support wchar_t as an encoding name
(http://defect.opensolaris.org/bz/show_bug.cgi?id=11957)
[2] Updated and new man pages at the materials directory of the case:
iconv_open.3c, iconv_open.3c.diff,
iconv.3c, iconv.3c.diff,
iconvctl.3c (new man page),
iconvstr.3c (new man page),
iconv.h.3head, iconv.h.3head.diff,
geniconvtbl.4, geniconvtbl.4.diff (See geniconvtbl.4.diff
first since
geniconvtbl.4 has text with change bars from PSARC/2001/659 too.)
[3] Localization guide at the materials directory of the case:
iconv-l10n-guide.txt
[4] Contract template file at the materials directory of the case:
contract-template.txt
[5] PSARC/1993/153 iconv/iconv_open/iconv_close
[6] PSARC/1999/292 Addition of geniconvtbl(1)
[7] PSARC/2001/072 GNU gettext support
(For /usr/lib/iconv/alias and alias support mechanism at iconv.)
[8] PSARC/2001/659 Non-identical character conversion support in
geniconvtbl(1)
[9] PSARC/2007/173 kiconv
[10] PSARC/2009/561 Pass-through iconv code conversion
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
G11N
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open