annotate lib/mbschr.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
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
1 /* Searching a string for a character.
17249
e542fd46ad6f maint: update all copyright year number ranges
Eric Blake <eblake@redhat.com>
parents: 16201
diff changeset
2 Copyright (C) 2007-2013 Free Software Foundation, Inc.
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3 Written by Bruno Haible <bruno@clisp.org>, 2007.
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 8129
diff changeset
5 This program is free software: you can redistribute it and/or modify
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 8129
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 8129
diff changeset
8 (at your option) any later version.
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13 GNU General Public License for more details.
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 8129
diff changeset
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18 #include <config.h>
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20 /* Specification. */
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
21 #include <string.h>
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
22
10954
a0bbe1a6f787 Remove HAVE_MBRTOWC conditionals. Use mbrtowc unconditionally.
Bruno Haible <bruno@clisp.org>
parents: 9309
diff changeset
23 #include "mbuiter.h"
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
24
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
25 /* Locate the first single-byte character C in the character string STRING,
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
26 and return a pointer to it. Return NULL if C is not found in STRING. */
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
27 char *
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
28 mbschr (const char *string, int c)
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
29 {
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
30 if (MB_CUR_MAX > 1
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
31 /* Optimization: We know that ASCII characters < 0x30 don't occur as
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
32 part of multibyte characters longer than 1 byte. Hence, if c < 0x30,
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
33 the faster unibyte loop can be used. */
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
34 && (unsigned char) c >= 0x30)
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
35 {
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
36 mbui_iterator_t iter;
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
38 for (mbui_init (iter, string);; mbui_advance (iter))
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
39 {
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
40 if (!mbui_avail (iter))
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
41 goto notfound;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
42 if (mb_len (mbui_cur (iter)) == 1
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
43 && (unsigned char) * mbui_cur_ptr (iter) == (unsigned char) c)
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
44 break;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 10954
diff changeset
45 }
8083
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
46 return (char *) mbui_cur_ptr (iter);
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
47 notfound:
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
48 return NULL;
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
49 }
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
50 else
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
51 return strchr (string, c);
c8815c37b48c New module 'mbschr'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
52 }