mbsinit - test for initial shift state
SYNOPSIS
#include <wchar.h>
int mbsinit (const mbstate_t *ps);
DESCRIPTION
Character conversion between the multibyte representation
and the wide character representation uses conversion
state, of type mbstate_t. Conversion of a string uses a
finite-state machine; when it is interrupted after the
complete conversion of a number of characters, it may need
to save a state for processing the remaining characters.
Such a conversion state is needed for the sake of encod
ings such as ISO-2022 and UTF-7.
The initial state is the state at the beginning of conver
sion of a string. There are two kinds of state: The one
used by multibyte to wide character conversion functions,
such as mbsrtowcs, and the one used by wide character to
multibyte conversion functions, such as wcsrtombs, but
they both fit in a mbstate_t, and they both have the same
representation for an initial state.
For 8-bit encodings, all states are equivalent to the ini
tial state. For multibyte encodings like UTF-8, EUC-*,
BIG5 or SJIS, the wide character to multibyte conversion
functions never produce non-initial states, but the multi
byte to wide character conversion functions like mbrtowc
do produce non-initial states when interrupted in the mid
dle of a character.
One possible way to create an mbstate_t in initial state
is to set it to zero:
mbstate_t state;
memset(&state,0,sizeof(mbstate_t));
On Linux, the following works as well, but might generate
compiler warnings:
mbstate_t state = { 0 };
The function mbsinit tests whether *ps corresponds to an
initial state.
RETURN VALUE
mbsinit returns non-zero if *ps is an initial state, or if
ps is a null pointer. Otherwise it returns 0.
CONFORMING TO
ISO/ANSI C, UNIX98
SEE ALSO
mbsrtowcs(3), wcsrtombs(3)
The behaviour of mbsinit depends on the LC_CTYPE category
of the current locale.
Man(1) output converted with
man2html