This is the mail archive of the
newlib@sources.redhat.com
mailing list for the newlib project.
Adding mbstate_t, mbsinit(), mbrtowc(), mbrlen() etc.
- From: egor duda <deo at logos-m dot ru>
- To: newlib at sources dot redhat dot com
- Date: Thu, 22 Aug 2002 21:50:50 +0400
- Subject: Adding mbstate_t, mbsinit(), mbrtowc(), mbrlen() etc.
- Organization: deo
- Reply-to: egor duda <newlib at sources dot redhat dot com>
Hi!
I'm preparing a patch to add restartable versions of multibyte
conversion functions to newlib. As long as all state information is
already handled by *_r() versions, this functions are just simple
wrappers around foo() of foo_r() functions, depending on MB_CAPABLE.
I have a couple of questions, though. First, SUSv2 states that
multibyte handling functions are declared in wchar.h, whereas newlib
currently declares them in stdlib.h. Should we create wchar.h and move
all appropriate stuff there?
Second, currently state is simple 0/1 switch, so now it's enough to have
typedef int mbstate_t;
But if in the future someone will want to add new encodings which
require more sophisticated state information (i don't know if such
encodings actually exist), we'll be forced to change definition of
mbstate_t thus breaking backward compatibility. GLIBC defines
mbstate_t as struct { int; union { wchar_t; char[4] }}, while
Microsoft's C runtime defines it as int. Would 'int' be enough for
everything?
egor. mailto:deo@logos-m.ru icq 5165414 fidonet 2:5020/496.19