apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karl Fogel <kfo...@newton.ch.collab.net>
Subject Re: status (?) of current iconv breakage
Date Tue, 23 Jul 2002 14:47:33 GMT
Jeff Trawick <trawick@attglobal.net> writes:
> Is anybody working on any of this?  Am I confused about something?
> 1) APRUTIL_EXPORT_LIBS not used in Apache, so httpd won't load on some
>    platforms
> 2) apr_iconv_inbuf_const hints from apr_hints.m4 not migrated (to
>    where?)
> 3) APU_CHECK_ICONV_INBUF not working
>    config.log shows that a warning is generated from the test compile
>    but it does not set apu_iconv_inbuf_const on my RH-6.2/glibc-2.1.3
>    box
>    This seems to be because $GCC is not set in the apr-util so the
>    APR_TRY_COMPILE_NO_WARNING can't work when using gcc.
> Does anyone know of other breakage?

Recently on the Subversion list, Mike Pilato asked Branko Čibej for a
summary what he knows about the current state of iconv breakage.  Here
is Brane's response:

   From: Branko Čibej <brane@xbc.nu>
   Subject: Re: Alpha on Win32 without UTF8 conversion
   To: cmpilato@collab.net
   CC: dev@subversion.tigris.org
   Date: Tue, 23 Jul 2002 04:12:50 +0200
   cmpilato@collab.net wrote:
   >Brane, if you can (pleeeeease) take the time to summarize briefly the
   >problems you know of, and a checklist of whether or not you've got
   >solutions for those problems (perhaps pending in mailing list
   >archives), I'd be glad to take a stab at picking up where you left
   O.K., here's a summary:
       * Paths in APR:
             o We must have a way to find out what encoding the file names
               produced and consumed by APR have, because on WinNT, those
               will always be in UTF-8, regardless of the current locale
               settings. See my message and resulting thread in dev@apr:
   Subject: [PATCH] Determining the character encoding used for paths in APR
       * Determining the default locale encoding:
             o apr_xlate.h defines APR_LOCALE_CHARSET, which you can pass
               to apr_xlate_open to have it figure out the encoding used by
               the current locale. The implementation is unix-only. I wrote
               a patch for Windows; I'm attaching the relevant bits of that
             o Now that apr_xlate is in apr-util, that patch has to be
               broken out and the code moved into APR. I suggested two new
               functions, apr_os_locale_encoding and
               apr_os_default_encoding, that would replace the
               get_locale_charset and get_default_charset in xlate.c.
       * Getting a working iconv library
             o apr-iconv isn't.
             o I still think supporting GNU libiconv is the way to go. See
               my mail in dev@subversion:
   Subject:  Re: Is --enable-utf8 working everywhere?
   Message-ID: <3D34CD49.2070403@xbc.nu>
                   Either the solition that detects and builds the
               sources, or one that detects and links with a pre-compiled
               libiconv, would be fine. Note that we wouldn't distribute
               any LGPL code, nor make libiconv binaries available -- just
               tell users how to build them. For the win32 binaries on the
               sownload site, it'd be quite enought to add a link to the
               gnu site where the sources are available; it's not as if
               we're changing that source.
   Please ask if any of this isn't clear.
   Brane Čibej   <brane@xbc.nu>   http://www.xbc.nu/brane/
   Index: i18n/unix/xlate.c
   RCS file: /home/cvs/apr/i18n/unix/xlate.c,v
   retrieving revision 1.28
   diff -u -p -r1.28 xlate.c
   --- i18n/unix/xlate.c	15 Jul 2002 19:21:01 -0000	1.28
   +++ i18n/unix/xlate.c	17 Jul 2002 00:46:12 -0000
   @@ -146,9 +146,21 @@ static const char *get_default_charset(v
     * defer to get_default_charset().
   -static const char *get_locale_charset(void)
   +static const char *get_locale_charset(apr_pool_t *pool)
   -#if defined(HAVE_NL_LANGINFO) && defined(HAVE_CODESET)
   +#ifdef WIN32
   +    /* ### Yes, this is a hack and doesn't belong in this file.
   +           Will fix soonest. --brane */
   +    LCID locale = GetThreadLocale();
   +    int len = GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, NULL, 0);
   +    char *cp = apr_palloc(pool, len + 2);
   +    if (0 < GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, cp + 2, len))
   +    {
   +        cp[0] = 'C';
   +        cp[1] = 'P';
   +        return cp;
   +    }
   +#elif defined(HAVE_NL_LANGINFO) && defined(HAVE_CODESET)
        const char *charset;
        charset = nl_langinfo(CODESET);
        if (charset) {
   @@ -158,13 +170,13 @@ static const char *get_locale_charset(vo
        return get_default_charset();
   -static const char *handle_special_names(const char *page)
   +static const char *handle_special_names(const char *page, apr_pool_t *pool)
        if (page == APR_DEFAULT_CHARSET) {
            return get_default_charset();
        else if (page == APR_LOCALE_CHARSET) {
   -        return get_locale_charset();
   +        return get_locale_charset(pool);
        else {
            return page;
   @@ -236,8 +250,8 @@ apr_status_t apr_xlate_open(apr_xlate_t 
        *convset = NULL;
   -    topage = handle_special_names(topage);
   -    frompage = handle_special_names(frompage);
   +    topage = handle_special_names(topage, pool);
   +    frompage = handle_special_names(frompage, pool);
        new = (apr_xlate_t *)apr_pcalloc(pool, sizeof(apr_xlate_t));
        if (!new) {

View raw message