Re: [PATCH RFC] Character set support

Daniel Jacobowitz
2002-09-13T17:33:36Z

On Fri, Sep 13, 2002 at 12:02:29PM -0500, Jim Blandy wrote:
>
> Daniel Jacobowitz <drow@mvista.com> writes:
> > I'm not suggesting reading wchar_t's from the target; that's not
> > terribly useful a thing to do. You _want_ the host wchar_t. It is
> > a host type capable of holding a wide character; the type changes
> > based on platform and on whether or not the platform actually has
> > wide character support.
>
> If you're suggesting using the host's wchar_t to hold characters after
> conversion from the target charset to the host charset, then I'm with
> you.
>
> If you're suggesting using the host's wchar_t to hold character values
> that have been read from the target, but not yet converted to the
> host's charset, then I really disagree. The target's wchar_t could be
> 32 bits, while the host's might be 16 bits.

Precisely. I was suggesting using host wchar_t after conversion to
host format.

> > There's not much you can do if it doesn't, is there?
>
> Print things in hex? When the target->host conversion fails, you
> can't just drop the character, but you still need some way to
> represent the pre-conversion value in GDB.
>
> > Rather than using iconv, which is meant for converting strings of
> > text, it seemed to me when I wrote the above comments that we should
> > be using mbrtowc/wctomb functions. However, unlike iconv, they
> > appear to operate based on the current locale rather than a
> > specified charset. I suppose they are unsuitable and we'll have to
> > figure out how to use iconv appropriately.
>
> Yes, exactly. If mbrtowc were parameterized with the charset, it
> would work pretty well.

Yeah. Maybe there's some way we can get the same effect. It would be
really nice to be able to handle target-wchar_t variables and figure
out what character they're supposed to be! The only standard way to do
this seems to be:
The behaviour of mbsrtowcs depends on the LC_CTYPE category of
the current locale.
and that would be too ridiculously slow.

I guess iconv is the way to go, then.

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer