annotate lib/mbsinit.c @ 17463:203c036eb0c6

bootstrap: support checksum utils without a --status option * build-aux/bootstrap: Only look for sha1sum if updating po files. Add sha1 to the list of supported checksum utils since it's now supported through adjustments below. (update_po_files): Remove the use of --status in a way that will suppress all error messages, but since this is only used to minimize updates, it shouldn't cause an issue. Exit early if there is a problem updating the po file checksums. (find_tool): Remove the check for --version support as this is optional as per commit 86186b17. Don't even check for the presence of the command as if that is needed, it's supported through configuring prerequisites in bootstrap.conf. Prompt that when a tool isn't found, one can define an environment variable to add to the hardcoded search list.
author Pádraig Brady <P@draigBrady.com>
date Thu, 08 Aug 2013 11:08:49 +0100
parents e542fd46ad6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10892
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
1 /* Test for initial conversion state.
17249
e542fd46ad6f maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents: 16201
diff changeset
2 Copyright (C) 2008-2013 Free Software Foundation, Inc.
10892
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3 Written by Bruno Haible <bruno@clisp.org>, 2008.
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5 This program is free software: you can redistribute it and/or modify
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8 (at your option) any later version.
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13 GNU General Public License for more details.
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18 #include <config.h>
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20 /* Specification. */
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
21 #include <wchar.h>
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
22
10898
c6a367263f52 Verify an assumption.
Bruno Haible <bruno@clisp.org>
parents: 10892
diff changeset
23 #include "verify.h"
c6a367263f52 Verify an assumption.
Bruno Haible <bruno@clisp.org>
parents: 10892
diff changeset
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
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37 /* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs()
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
38 and wcrtomb(), wcsrtombs().
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
39 We assume that
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
40 - sizeof (mbstate_t) >= 4,
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
41 - only stateless encodings are supported (such as UTF-8 and EUC-JP, but
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
42 not ISO-2022 variants),
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
43 - for each encoding, the number of bytes for a wide character is <= 4.
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
44 (This maximum is attained for UTF-8, GB18030, EUC-TW.)
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
45 We define the meaning of mbstate_t as follows:
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
46 - In mb -> wc direction, mbstate_t's first byte contains the number of
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
47 buffered bytes (in the range 0..3), followed by up to 3 buffered bytes.
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
48 - In wc -> mb direction, mbstate_t contains no information. In other
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
49 words, it is always in the initial state. */
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
50
10898
c6a367263f52 Verify an assumption.
Bruno Haible <bruno@clisp.org>
parents: 10892
diff changeset
51 verify (sizeof (mbstate_t) >= 4);
c6a367263f52 Verify an assumption.
Bruno Haible <bruno@clisp.org>
parents: 10892
diff changeset
52
10892
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
53 int
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
54 mbsinit (const mbstate_t *ps)
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
55 {
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
56 const char *pstate = (const char *)ps;
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
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
67a8f53c94f0 New module 'mbsinit'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
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