1 .\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
3 .\" This is free documentation; you can redistribute it and/or
4 .\" modify it under the terms of the GNU General Public License as
5 .\" published by the Free Software Foundation; either version 2 of
6 .\" the License, or (at your option) any later version.
8 .\" References consulted:
9 .\" GNU glibc-2 source code and manual
10 .\" Dinkumware C library reference http://www.dinkumware.com/
11 .\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
13 .\" Japanese Version Copyright (c) 1999 HANATAKA Shinya
14 .\" all rights reserved.
15 .\" Translated Tue Jan 11 00:56:10 JST 2000
16 .\" by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
18 .TH MBSNRTOWCS 3 2011-10-01 "GNU" "Linux Programmer's Manual"
20 mbsnrtowcs \- マルチバイト文字列をワイド文字列に変換する
25 .BI "size_t mbsnrtowcs(wchar_t *" dest ", const char **" src ,
26 .BI " size_t " nms ", size_t " len ", mbstate_t *" ps );
31 .RB ( feature_test_macros (7)
41 _XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
53 変換するバイト数が \fI*src\fP から始まる \fInms\fP バイトに制限されている
56 \fIdest\fP が NULL ポインターでなければ
59 \fI*src\fP からのマルチバイト文字列の最大 \fInms\fP までを
60 \fIdest\fP からのワイド文字列に変換する。
61 最大 \fIlen\fP 文字のワイド文字が \fIdest\fP に書き込まれる。
62 同時にシフト状態 \fI*ps\fP を更新する。
64 .I "mbrtowc(dest, *src, n, ps)"
65 を、この呼び出しが成功する限り、繰り返し実行したのと実質的に同様である。
66 ここでの \fIn\fP は正の数であり、繰り返しごとに \fIdest\fP が 1 増加させられ、
67 \fI*src\fP が消費したバイト数だけ増加させられる。変換は以下の三つの
70 不正なマルチバイト列に遭遇した。この場合には \fI*src\fP は不正な
73 を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。
75 \fInms\fP 制限によって強制的に停止するか、\fIlen\fP 文字の L\(aq\\0\(aq 以外の
76 ワイド文字を \fIdest\fP に格納した場合。この場合は \fI*src\fP は
77 次に変換されるマルチバイト列を指すようにして、\fIdest\fP に書き込まれた
80 マルチバイト文字列が終端の NULL ワイド文字 (\(aq\\0\(aq)
82 (この時、副作用として \fI*ps\fP が初期状態に戻される。)
83 この場合は \fI*src\fP には NULL が設定され、
84 \fIdest\fP に書き込まれた文字数 (終端の NULL ワイド文字は含まれない) を返す。
86 \fIdest\fP が NULL の場合、\fIlen\fP は無視され、上記と同様の変換が
87 行われるが、変換されたワイド文字はメモリに書き込まれず、変換先の上限
90 上記のどちらの場合でも、\fIps\fP が NULL ポインターならば、代りに
91 mbsnrtowcs 関数のみが使用する静的で名前のない状態が使用される。
93 プログラマーは \fIdest\fP に最低でも \fIlen\fP ワイド文字を書き込むこ
94 とができる空間があることを保証しなければならない。
97 関数はワイド文字列に変換完了したワイド文字の数を返す。
98 終端のナルワイド文字は含まない。不正なマルチバイト列に遭遇した場合には
100 を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。
109 \fIps\fP として NULL を渡すことはマルチスレッドでは安全でない。