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


_______________________________________________
opensolaris-arc mailing list
[email protected]

Reply via email to