mbslen.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* Counting the multibyte characters in a string.
  2. Copyright (C) 2007-2017 Free Software Foundation, Inc.
  3. Written by Bruno Haible <bruno@clisp.org>, 2007.
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  14. #include <config.h>
  15. /* Specification. */
  16. #include <string.h>
  17. #include <stdlib.h>
  18. #include "mbuiter.h"
  19. /* Return the number of multibyte characters in the character string STRING. */
  20. size_t
  21. mbslen (const char *string)
  22. {
  23. if (MB_CUR_MAX > 1)
  24. {
  25. size_t count;
  26. mbui_iterator_t iter;
  27. count = 0;
  28. for (mbui_init (iter, string); mbui_avail (iter); mbui_advance (iter))
  29. count++;
  30. return count;
  31. }
  32. else
  33. return strlen (string);
  34. }