lib/string.c: simplify str[c]spn
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Fri, 29 Apr 2022 21:38:01 +0000 (14:38 -0700)
committerakpm <akpm@linux-foundation.org>
Fri, 29 Apr 2022 21:38:01 +0000 (14:38 -0700)
Use strchr(), which makes them a lot shorter, and more obviously symmetric
in their treatment of accept/reject.  It also saves a little bit of .text;
bloat-o-meter for an arm build says

Function                                     old     new   delta
strcspn                                       92      76     -16
strspn                                       108      76     -32

While here, also remove a stray empty line before EXPORT_SYMBOL().

Link: https://lkml.kernel.org/r/20220328224119.3003834-2-linux@rasmusvillemoes.dk
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/string.c

index 485777c9da832002946611271e99672983481cd3..6f334420f68718f3d25bf470f0feb0842229b38b 100644 (file)
@@ -517,21 +517,13 @@ EXPORT_SYMBOL(strnlen);
 size_t strspn(const char *s, const char *accept)
 {
        const char *p;
-       const char *a;
-       size_t count = 0;
 
        for (p = s; *p != '\0'; ++p) {
-               for (a = accept; *a != '\0'; ++a) {
-                       if (*p == *a)
-                               break;
-               }
-               if (*a == '\0')
-                       return count;
-               ++count;
+               if (!strchr(accept, *p))
+                       break;
        }
-       return count;
+       return p - s;
 }
-
 EXPORT_SYMBOL(strspn);
 #endif
 
@@ -544,17 +536,12 @@ EXPORT_SYMBOL(strspn);
 size_t strcspn(const char *s, const char *reject)
 {
        const char *p;
-       const char *r;
-       size_t count = 0;
 
        for (p = s; *p != '\0'; ++p) {
-               for (r = reject; *r != '\0'; ++r) {
-                       if (*p == *r)
-                               return count;
-               }
-               ++count;
+               if (strchr(reject, *p))
+                       break;
        }
-       return count;
+       return p - s;
 }
 EXPORT_SYMBOL(strcspn);
 #endif