Adding mbstate_t, mbsinit(), mbrtowc(), mbrlen() etc.

egor duda deo@logos-m.ru
Thu Aug 22 10:52:00 GMT 2002


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



More information about the Newlib mailing list