diff options
Diffstat (limited to 'man3/mbsinit.3')
-rw-r--r-- | man3/mbsinit.3 | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/man3/mbsinit.3 b/man3/mbsinit.3 new file mode 100644 index 000000000..12b602362 --- /dev/null +++ b/man3/mbsinit.3 @@ -0,0 +1,66 @@ +.\" 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 +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, and the one used by wide +character to multibyte conversion functions, such as \fBwcsrtombs\fP, +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 do +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: +.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 +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. +.SH "CONFORMING TO" +ISO/ANSI C, UNIX98 +.SH "SEE ALSO" +.BR mbsrtowcs (3), +.BR wcsrtombs (3) +.SH NOTES +The behaviour of \fBmbsinit\fP depends on the LC_CTYPE category of the +current locale. |