Mercurial > hg > octave-jordi > gnulib-hg
annotate lib/mbschr.c @ 10954:a0bbe1a6f787
Remove HAVE_MBRTOWC conditionals. Use mbrtowc unconditionally.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 22 Dec 2008 12:11:44 +0100 |
parents | bbbbbf4cd1c5 |
children | e8d2c6fc33ad |
rev | line source |
---|---|
8083 | 1 /* Searching a string for a character. |
10954
a0bbe1a6f787
Remove HAVE_MBRTOWC conditionals. Use mbrtowc unconditionally.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
2 Copyright (C) 2007-2008 Free Software Foundation, Inc. |
8083 | 3 Written by Bruno Haible <bruno@clisp.org>, 2007. |
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 | 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 | 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 | |
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 | 17 |
18 #include <config.h> | |
19 | |
20 /* Specification. */ | |
21 #include <string.h> | |
22 | |
10954
a0bbe1a6f787
Remove HAVE_MBRTOWC conditionals. Use mbrtowc unconditionally.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
23 #include "mbuiter.h" |
8083 | 24 |
25 /* Locate the first single-byte character C in the character string STRING, | |
26 and return a pointer to it. Return NULL if C is not found in STRING. */ | |
27 char * | |
28 mbschr (const char *string, int c) | |
29 { | |
30 if (MB_CUR_MAX > 1 | |
31 /* Optimization: We know that ASCII characters < 0x30 don't occur as | |
32 part of multibyte characters longer than 1 byte. Hence, if c < 0x30, | |
33 the faster unibyte loop can be used. */ | |
34 && (unsigned char) c >= 0x30) | |
35 { | |
36 mbui_iterator_t iter; | |
37 | |
38 for (mbui_init (iter, string);; mbui_advance (iter)) | |
39 { | |
8129 | 40 if (!mbui_avail (iter)) |
41 goto notfound; | |
8083 | 42 if (mb_len (mbui_cur (iter)) == 1 |
43 && (unsigned char) * mbui_cur_ptr (iter) == (unsigned char) c) | |
44 break; | |
45 } | |
46 return (char *) mbui_cur_ptr (iter); | |
47 notfound: | |
48 return NULL; | |
49 } | |
50 else | |
51 return strchr (string, c); | |
52 } |