Mercurial > hg > octave-lojdl > gnulib-hg
annotate lib/mbsinit.c @ 16358:a712776b11ce
maint: spelling fixes
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sun, 05 Feb 2012 13:42:03 -0800 |
parents | 8250f2777afc |
children | e542fd46ad6f |
rev | line source |
---|---|
10892 | 1 /* Test for initial conversion state. |
16201
8250f2777afc
maint: update all copyright year number ranges
Jim Meyering <meyering@redhat.com>
parents:
14345
diff
changeset
|
2 Copyright (C) 2008-2012 Free Software Foundation, Inc. |
10892 | 3 Written by Bruno Haible <bruno@clisp.org>, 2008. |
4 | |
5 This program is free software: you can redistribute it and/or modify | |
6 it under the terms of the GNU General Public License as published by | |
7 the Free Software Foundation; either version 3 of the License, or | |
8 (at your option) any later version. | |
9 | |
10 This program is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
17 | |
18 #include <config.h> | |
19 | |
20 /* Specification. */ | |
21 #include <wchar.h> | |
22 | |
10898 | 23 #include "verify.h" |
24 | |
14345
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
25 #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
26 |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
27 /* On native Windows, 'mbstate_t' is defined as 'int'. */ |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
28 |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
29 int |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
30 mbsinit (const mbstate_t *ps) |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
31 { |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
32 return ps == NULL || *ps == 0; |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
33 } |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
34 |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
35 #else |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
36 |
10892 | 37 /* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs() |
38 and wcrtomb(), wcsrtombs(). | |
39 We assume that | |
40 - sizeof (mbstate_t) >= 4, | |
41 - only stateless encodings are supported (such as UTF-8 and EUC-JP, but | |
42 not ISO-2022 variants), | |
43 - for each encoding, the number of bytes for a wide character is <= 4. | |
44 (This maximum is attained for UTF-8, GB18030, EUC-TW.) | |
45 We define the meaning of mbstate_t as follows: | |
46 - In mb -> wc direction, mbstate_t's first byte contains the number of | |
47 buffered bytes (in the range 0..3), followed by up to 3 buffered bytes. | |
48 - In wc -> mb direction, mbstate_t contains no information. In other | |
49 words, it is always in the initial state. */ | |
50 | |
10898 | 51 verify (sizeof (mbstate_t) >= 4); |
52 | |
10892 | 53 int |
54 mbsinit (const mbstate_t *ps) | |
55 { | |
56 const char *pstate = (const char *)ps; | |
57 | |
14344
5cdebc45677d
mbsinit: Don't crash for a NULL argument.
Bruno Haible <bruno@clisp.org>
parents:
14079
diff
changeset
|
58 return pstate == NULL || pstate[0] == 0; |
10892 | 59 } |
14345
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
60 |
38e1a5ec714d
mbsinit: Work around mingw bug.
Bruno Haible <bruno@clisp.org>
parents:
14344
diff
changeset
|
61 #endif |