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
12 .\" http://www.UNIX-systems.org/online.html
15 .\" Japanese Version Copyright (c) 1999 HANATAKA Shinya
16 .\" all rights reserved.
17 .\" Translated Tue Jan 11 00:56:16 JST 2000
18 .\" by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
19 .\" Updated Thu Dec 13 JST 2001 by Kentaro Shirakata <argrath@ub32.org>
21 .TH MBRTOWC 3 2011-09-28 "GNU" "Linux Programmer's Manual"
24 .\"O mbrtowc \- convert a multibyte sequence to a wide character
25 mbrtowc \- ¥Þ¥ë¥Á¥Ð¥¤¥ÈÎó¤ò¥ï¥¤¥Éʸ»ú¤ËÊÑ´¹¤¹¤ë
31 .BI "size_t mbrtowc(wchar_t *" pwc ", const char *" s ", size_t " n \
36 .\"O The main case for this function is when \fIs\fP is not NULL and \fIpwc\fP is
38 .\"O In this case, the
40 .\"O function inspects at most \fIn\fP
41 .\"O bytes of the multibyte string starting at \fIs\fP, extracts the next complete
42 .\"O multibyte character, converts it to a wide character and stores it at
44 .\"O It updates the shift state \fI*ps\fP.
45 .\"O If the converted wide
46 .\"O- character is not L\(aq\\0\(aq, it returns the number of bytes that were consumed
47 .\"O+ character is not L\(aq\\0\(aq (the null wide character),
48 .\"O+ it returns the number of bytes that were consumed
50 .\"O If the converted wide character is L\(aq\\0\(aq, it resets the shift
51 .\"O state \fI*ps\fP to the initial state and returns 0.
52 ¤³¤Î´Ø¿ô¤¬ÍѤ¤¤é¤ì¤ë¾ì¹ç¡¢Ä̾ï \fIs\fP ¤¬ NULL ¤Ç¤Ê¤¯ \fIpwc\fP ¤â NULL ¤Ç
55 ´Ø¿ô¤Ï \fIs\fP ¤«¤é»Ï¤Þ¤ëºÇÂç \fIn\fP ¥Ð¥¤¥È¤Î
56 ¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ò¸¡ºº¤·¤Æ¡¢¼¡¤Î´°Á´¤Ê¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»úÎó¤ò¼è¤ê½Ð¤·¡¢
57 ¤½¤ì¤ò¥ï¥¤¥Éʸ»ú¤ËÊÑ´¹¤·¤Æ \fI*pwc\fP ¤Ë³ÊǼ¤¹¤ë¡£
58 Ʊ»þ¤Ë¥·¥Õ¥È¾õÂÖ \fI*ps\fP ¤ò¹¹¿·¤¹¤ë¡£
59 ÊÑ´¹¤·¤¿¥ï¥¤¥Éʸ»ú¤¬ L\(aq\\0\(aq (NULL ¥ï¥¤¥Éʸ»ú) ¤Ç¤Ê¤±¤ì¤Ð¡¢
60 \fIs\fP ¤«¤é¾ÃÈñ¤¹¤ë¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
61 ÊÑ´¹¤·¤¿¥ï¥¤¥Éʸ»ú¤¬ L\(aq\\0\(aq ¤Î¾ì¹ç¤Ë¤Ï¥·¥Õ¥È¾õÂÖ \fI*ps\fP ¤ò
62 ½é´ü¾õÂÖ¤ËÌᤷ¤Æ 0 ¤òÊÖ¤¹¡£
64 .\"O If the \fIn\fP bytes starting at \fIs\fP do not contain a complete multibyte
67 .\"O returns \fI(size_t)\ \-2\fP.
68 .\"O This can happen even if
69 .\"O \fIn\fP >= \fIMB_CUR_MAX\fP, if the multibyte string contains redundant shift
71 \fIs\fP ¤«¤é»Ï¤Þ¤ë \fIn\fP ¥Ð¥¤¥È¤¬´°Á´¤Ê¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ò´Þ¤ó¤Ç¤¤¤Ê¤¤
74 ¤Ï \fI(size_t)\ \-2\fP ¤òÊÖ¤¹¡£
75 ¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»úÎó¤Ë¾éĹ¤Ê¥·¥Õ¥È¥·¡¼¥±¥ó¥¹¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¡¢
76 \fIn\fP >= \fIMB_CUR_MAX\fP ¤Î»þ¤Ë¤â¤³¤Î¤è¤¦¤Ê¤³¤È¤¬µ¯¤³¤ê¤¨¤ë¡£
78 .\"O If the multibyte string starting at \fIs\fP contains an invalid multibyte
79 .\"O sequence before the next complete character,
82 .\"O \fI(size_t)\ \-1\fP and sets \fIerrno\fP to \fBEILSEQ\fP.
84 .\"O the effects on \fI*ps\fP are undefined.
85 \fIs\fP ¤«¤é»Ï¤Þ¤ë¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»úÎ󤬡¢¼¡¤Î´°Á´¤Êʸ»ú¤ÎÁ°¤Ë
86 ÉÔÀµ¤Ê¥Þ¥ë¥Á¥Ð¥¤¥ÈÎó¤ò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢
89 \fI(size_t)\ \-1\fP ¤òÊÖ¤·¡¢\fIerrno\fP ¤Ë \fBEILSEQ\fP ¤òÀßÄꤹ¤ë¡£
90 ¤³¤Î¾ì¹ç¤Ï \fI*ps\fP ¤Ø¤Î±Æ¶Á¤Ï̤ÄêµÁ¤Ç¤¢¤ë¡£
92 .\"O A different case is when \fIs\fP is not NULL but \fIpwc\fP is NULL.
96 .\"O function behaves as above, except that it does not
97 .\"O store the converted wide character in memory.
98 \fIs\fP ¤¬ NULL ¤Ç¤Ê¤¯ \fIpwc\fP ¤¬ NULL ¤Î¾ì¹ç¤Ï
101 ¾åµ¤ÈƱÍͤËÆ°ºî¤¹¤ë¤¬¡¢ÊÑ´¹¤·¤¿¥ï¥¤¥Éʸ»ú¤Ï¥á¥â¥ê¤Ë¤Ï½ñ¤¹þ¤Þ¤ì¤Ê¤¤¡£
103 .\"O A third case is when \fIs\fP is NULL.
104 .\"O In this case, \fIpwc\fP and \fIn\fP are
106 .\"O If the conversion state represented by \fI*ps\fP denotes an
107 .\"O incomplete multibyte character conversion, the
110 .\"O returns \fI(size_t)\ \-1\fP, sets \fIerrno\fP to \fBEILSEQ\fP, and
111 .\"O leaves \fI*ps\fP in an undefined state.
115 puts \fI*ps\fP in the initial state and returns 0.
116 »°ÈÖÌܤξì¹ç¤È¤·¤Æ \fIs\fP ¤¬ NULL ¤Î¾ì¹ç¡¢ \fIpwc\fP ¤È \fIn\fP ¤Ï
118 \fI*ps\fP ¤¬É½¸½¤¹¤ëÊÑ´¹¾õÂÖ¤¬ÉÔ´°Á´¤Ê¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»úÊÑ´¹¤ò¼¨¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢
120 ´Ø¿ô¤Ï \fI(size_t)\ \-1\fP ¤òÊÖ¤·¡¢
121 \fIerrno\fP ¤Ë \fBEILSEQ\fP ¤ò¥»¥Ã¥È¤·¡¢
122 \fI*ps\fP ¤Ï̤ÄêµÁ¾õÂ֤Τޤޤˤ¹¤ë¡£
125 ´Ø¿ô¤Ï \fI*ps\fP ¤ò½é´ü¾õÂ֤ˤ·¤Æ 0 ¤òÊÖ¤¹¡£
127 .\"O In all of the above cases, if \fIps\fP is a NULL pointer, a static anonymous
128 .\"O state only known to the mbrtowc function is used instead.
129 ¾åµ¤ÎÁ´¤Æ¤Î¾ì¹ç¤Ë¤ª¤¤¤Æ¡¢\fIps\fP ¤¬ NULL ¥Ý¥¤¥ó¥¿¡¼¤Ê¤é¤ÐÂå¤ï¤ê¤Ë
130 mbrtowc ´Ø¿ô¤Î¤ß¤¬»ÈÍѤ¹¤ëÀÅŪ¤Ç̾Á°¤Î¤Ê¤¤¾õÂÖ¤¬»ÈÍѤµ¤ì¤ë¡£
131 .\"O Otherwise, \fI*ps\fP must be a valid \fImbstate_t\fP object.
132 ¤µ¤â¤Ê¤±¤ì¤Ð¡¢\fI*ps\fP ¤Ï͸ú¤Ê \fImbstate_t\fP ¥ª¥Ö¥¸¥§¥¯¥È¤Ç
134 .\"O An \fImbstate_t\fP object \fIa\fP can be initialized to the initial state
135 .\"O by zeroing it, for example using
136 \fImbstate_t\fP ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë \fIa\fP ¤Ï¥¼¥í¤ÇËä¤á¤ë¤³¤È¤Ë¤è¤Ã¤Æ
137 ½é´ü¾õÂ֤˽é´ü²½¤Ç¤¤ë¡£°Ê²¼¤ËÎã¤ò¼¨¤¹¡£
140 memset(&a, 0, sizeof(a));
142 .\"O .SH "RETURN VALUE"
146 .\"O function returns the number of bytes parsed from the
147 .\"O multibyte sequence starting at \fIs\fP, if a non-L\(aq\\0\(aq wide character
149 L\(aq\\0\(aq °Ê³°¤Î¥ï¥¤¥Éʸ»ú¤òǧ¼±¤·¤¿¾ì¹ç¤Ë¤Ï
152 ¤«¤é»Ï¤Þ¤ë¥Þ¥ë¥Á¥Ð¥¤¥ÈÎ󤫤é²òÀϤ·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
153 .\"O It returns 0, if a L\(aq\\0\(aq wide character was recognized.
155 .\"O .I (size_t)\ \-1
156 .\"O and sets \fIerrno\fP to \fBEILSEQ\fP, if an invalid multibyte sequence was
158 .\"O It returns \fI(size_t)\ \-2\fP if it couldn't parse a complete multibyte
159 .\"O character, meaning that \fIn\fP should be increased.
160 L\(aq\\0\(aq ¥ï¥¤¥Éʸ»ú¤òǧ¼±¤·¤¿¾ì¹ç¤Ë¤Ï 0 ¤òÊÖ¤¹¡£
161 ÉÔÀµ¤Ê¥Þ¥ë¥Á¥Ð¥¤¥ÈÎó¤ËÁø¶ø¤·¤¿¾ì¹ç¤Ë¤Ï
164 \fIerrno\fP ¤Ë \fBEILSEQ\fP ¤òÀßÄꤹ¤ë¡£´°Á´¤Ê¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ò
165 ²òÀϤǤ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï
167 ¤òÊÖ¤· \fIn\fP ¤òÁý²Ã¤µ¤»¤ëɬÍפ¬¤¢¤ë¤³¤È¤ò¼¨¤¹¡£
168 .\"O .SH "CONFORMING TO"
180 ¤ÎÆ°ºî¤Ï¸½ºß¤Î¥í¥±¡¼¥ë¤Î
182 ¥«¥Æ¥´¥ê¤Ë°Í¸¤·¤Æ¤¤¤ë¡£