man-pages/man3/mbsinit.3

70 lines
2.6 KiB
Groff
Raw Normal View History

2004-11-03 13:51:07 +00:00
.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" References consulted:
.\" GNU glibc-2 source code and manual
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
.TH MBSINIT 3 2000-11-20 "GNU" "Linux Programmer's Manual"
.SH NAME
mbsinit \- test for initial shift state
.SH SYNOPSIS
.nf
.B #include <wchar.h>
.sp
.BI "int mbsinit(const mbstate_t *" ps );
.fi
.SH DESCRIPTION
Character conversion between the multibyte representation and the wide
character representation uses conversion state, of type \fBmbstate_t\fP.
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
2004-11-03 13:51:07 +00:00
state is needed for the sake of encodings such as ISO-2022 and UTF-7.
.PP
The initial state is the state at the beginning of conversion of a string.
There are two kinds of state: The one used by multibyte to wide character
conversion functions, such as \fBmbsrtowcs\fP(3), and the one used by wide
character to multibyte conversion functions, such as \fBwcsrtombs\fP(3),
2004-11-03 13:51:07 +00:00
but they both fit in a \fBmbstate_t\fP, and they both have the same
representation for an initial state.
.PP
For 8-bit encodings, all states are equivalent to the initial 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
multibyte to wide-character conversion functions like \fBmbrtowc\fP(3) do
2004-11-03 13:51:07 +00:00
produce non-initial states when interrupted in the middle of a character.
.PP
One possible way to create an mbstate_t in initial
state is to set it to zero:
2004-11-03 13:51:07 +00:00
.nf
mbstate_t state;
memset(&state,0,sizeof(mbstate_t));
.fi
On Linux, the following works as well, but might generate compiler warnings:
.nf
mbstate_t state = { 0 };
.fi
.PP
The function \fBmbsinit\fP() tests whether \fI*ps\fP corresponds to an
2004-11-03 13:51:07 +00:00
initial state.
.SH "RETURN VALUE"
\fBmbsinit\fP() returns non-zero if \fI*ps\fP is an initial state, or if
\fIps\fP is a null pointer.
Otherwise it returns 0.
2004-11-03 13:51:07 +00:00
.SH "CONFORMING TO"
2006-08-03 13:57:30 +00:00
C99
2004-11-03 13:51:07 +00:00
.SH "SEE ALSO"
.BR mbsrtowcs (3),
.BR wcsrtombs (3)
.SH NOTES
The behaviour of \fBmbsinit\fP() depends on the LC_CTYPE category of the
2004-11-03 13:51:07 +00:00
current locale.