X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmbscspn.c;h=68ac1c79769a24591cf29e5f0e5fa9779765a0d7;hb=56d6664559f449af25f0d331457b014b02324d65;hp=30153a14ca59be05134fe13b3f981aaf71927687;hpb=2f6c32bf5803ab9ee24ae43b9042616b10773b41;p=gnulib.git diff --git a/lib/mbscspn.c b/lib/mbscspn.c index 30153a14c..68ac1c797 100644 --- a/lib/mbscspn.c +++ b/lib/mbscspn.c @@ -1,11 +1,11 @@ /* Searching a string for a character among a given set of characters. - Copyright (C) 1999, 2002, 2006-2007 Free Software Foundation, Inc. + Copyright (C) 1999, 2002, 2006-2011 Free Software Foundation, Inc. Written by Bruno Haible , 2007. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -13,17 +13,14 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #include /* Specification. */ #include -#if HAVE_MBRTOWC -# include "mbuiter.h" -#endif +#include "mbuiter.h" /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the number of bytes from the @@ -41,32 +38,31 @@ mbscspn (const char *string, const char *accept) return (ptr != NULL ? ptr - string : strlen (string)); } /* General case. */ -#if HAVE_MBRTOWC if (MB_CUR_MAX > 1) { mbui_iterator_t iter; for (mbui_init (iter, string); mbui_avail (iter); mbui_advance (iter)) - { - if (mb_len (mbui_cur (iter)) == 1) - { - if (mbschr (accept, (unsigned char) * mbui_cur_ptr (iter))) - return mbui_cur_ptr (iter) - string; - } - else - { - mbui_iterator_t aiter; + { + if (mb_len (mbui_cur (iter)) == 1) + { + if (mbschr (accept, * mbui_cur_ptr (iter))) + goto found; + } + else + { + mbui_iterator_t aiter; - for (mbui_init (aiter, accept); - mbui_avail (aiter); - mbui_advance (aiter)) - if (mb_equal (mbui_cur (aiter), mbui_cur (iter))) - return mbui_cur_ptr (iter) - string; - } - } - return strlen (string); + for (mbui_init (aiter, accept); + mbui_avail (aiter); + mbui_advance (aiter)) + if (mb_equal (mbui_cur (aiter), mbui_cur (iter))) + goto found; + } + } + found: + return mbui_cur_ptr (iter) - string; } else -#endif return strcspn (string, accept); }