diff options
author | Bruno Haible <bruno@clisp.org> | 2007-02-11 17:02:31 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2007-02-11 17:02:31 +0000 |
commit | ef66119f6b4d0211693d944c495d1e15c9331667 (patch) | |
tree | 14929c3b1210972c5256454bfe4e4cb6d8193a28 /lib/mbslen.c | |
parent | 9e66c13fe293aefa49d93dc70c017f31eca4e078 (diff) | |
download | gnulib-ef66119f6b4d0211693d944c495d1e15c9331667.tar.gz |
New module 'mbslen'.
Diffstat (limited to 'lib/mbslen.c')
-rw-r--r-- | lib/mbslen.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/mbslen.c b/lib/mbslen.c new file mode 100644 index 0000000000..41c219f54c --- /dev/null +++ b/lib/mbslen.c @@ -0,0 +1,47 @@ +/* Counting the multibyte characters in a string. + Copyright (C) 2007 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2007. + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. */ + +#include <config.h> + +/* Specification. */ +#include <string.h> + +#if HAVE_MBRTOWC +# include "mbuiter.h" +#endif + +/* Return the number of multibyte characters in the character string STRING. */ +size_t +mbslen (const char *string) +{ +#if HAVE_MBRTOWC + if (MB_CUR_MAX > 1) + { + size_t count; + mbui_iterator_t iter; + + count = 0; + for (mbui_init (iter, string); mbui_avail (iter); mbui_advance (iter)) + count++; + + return count; + } + else +#endif + return strlen (string); +} |