]> Savannah Git Hosting - gnulib.git/commitdiff
mbsrchr: Optimize.
authorBruno Haible <bruno@clisp.org>
Tue, 18 Jul 2023 11:30:18 +0000 (13:30 +0200)
committerBruno Haible <bruno@clisp.org>
Tue, 18 Jul 2023 11:30:18 +0000 (13:30 +0200)
* lib/mbsrchr.c: Include mbuiterf.h instead of mbuiter.h.
(mbsrchr): Use mbuif_* macros instead of mbui_* macros.
* modules/mbsrchr (Depends-on): Add mbuiterf. Remove mbuiter.

ChangeLog
lib/mbsrchr.c
modules/mbsrchr

index de7744f0efaac17465a02dd85fbac31915030b6d..c0288b7ebcc27d7c5eb879b6b3a2938368c55a77 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2023-07-18  Bruno Haible  <bruno@clisp.org>
 
+       mbsrchr: Optimize.
+       * lib/mbsrchr.c: Include mbuiterf.h instead of mbuiter.h.
+       (mbsrchr): Use mbuif_* macros instead of mbui_* macros.
+       * modules/mbsrchr (Depends-on): Add mbuiterf. Remove mbuiter.
+
        mbschr: Optimize.
        * lib/mbschr.c: Include mbuiterf.h instead of mbuiter.h.
        (mbschr): Use mbuif_* macros instead of mbui_* macros.
index a00b608fc8f38fb924c66da7bb24de037411bb28..4c4767462c2da73d278880afd08907d2b70e19e3 100644 (file)
@@ -20,7 +20,7 @@
 /* Specification.  */
 #include <string.h>
 
-#include "mbuiter.h"
+#include "mbuiterf.h"
 
 /* Locate the last single-byte character C in the character string STRING,
    and return a pointer to it.  Return NULL if C is not found in STRING.  */
@@ -34,14 +34,17 @@ mbsrchr (const char *string, int c)
       && (unsigned char) c >= 0x30)
     {
       const char *result = NULL;
-      mbui_iterator_t iter;
 
-      for (mbui_init (iter, string); mbui_avail (iter); mbui_advance (iter))
+      mbuif_state_t state;
+      const char *iter;
+      for (mbuif_init (state), iter = string; mbuif_avail (state, iter); )
         {
-          if (mb_len (mbui_cur (iter)) == 1
-              && (unsigned char) * mbui_cur_ptr (iter) == (unsigned char) c)
-            result = mbui_cur_ptr (iter);
+          mbchar_t cur = mbuif_next (state, iter);
+          if (mb_len (cur) == 1 && (unsigned char) *iter == (unsigned char) c)
+            result = iter;
+          iter += mb_len (cur);
         }
+
       return (char *) result;
     }
   else
index fcf568186409ec4c6c87e6b1ef5668b40c0145e0..56b9ed94897d2993a831544ac8824fcd9f3ef359 100644 (file)
@@ -5,7 +5,7 @@ Files:
 lib/mbsrchr.c
 
 Depends-on:
-mbuiter
+mbuiterf
 string
 
 configure.ac: