summaryrefslogtreecommitdiffstats
path: root/man3/mbsinit.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/mbsinit.3')
-rw-r--r--man3/mbsinit.366
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.