| .\" 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. |