chiark / gitweb /
Fix the gentoo udev rules to allow the box to boot properly
[elogind.git] / klibc / klibc / strspn.c
index 856a96419739eb229a7f76277ae0708e2237dc75..10b1dfc5fab58bb82bb3010c30266436029529fd 100644 (file)
@@ -1,67 +1,11 @@
 /*
- * strspn, strcspn
+ * strspn
  */
 
-#include <string.h>
-#include <stddef.h>
-#include <inttypes.h>
-#include <limits.h>
-
-#ifndef LONG_BIT
-#define LONG_BIT (CHAR_BIT*sizeof(long))
-#endif
-
-static inline void
-set_bit(unsigned long *bitmap, unsigned int bit)
-{
-  bitmap[bit/LONG_BIT] |= 1UL << (bit%LONG_BIT);
-}
-
-static inline int
-test_bit(unsigned long *bitmap, unsigned int bit)
-{
-  return (int)(bitmap[bit/LONG_BIT] >> (bit%LONG_BIT)) & 1;
-}
-
-static size_t
-strxspn(const char *s, const char *map, int parity)
-{
-  unsigned long matchmap[((1 << CHAR_BIT)+LONG_BIT-1)/LONG_BIT];
-  size_t n = 0;
-
-  /* Create bitmap */
-  memset(matchmap, 0, sizeof matchmap);
-  while ( *map )
-    set_bit(matchmap, (unsigned char) *map++);
-
-  /* Make sure the null character never matches */
-  if ( parity )
-    set_bit(matchmap, 0);
-
-  /* Calculate span length */
-  while ( test_bit(matchmap, (unsigned char) *s++)^parity )
-    n++;
-
-  return n;
-}
+#include "strxspn.h"
 
 size_t
 strspn(const char *s, const char *accept)
 {
-  return strxspn(s, accept, 0);
+  return __strxspn(s, accept, 0);
 }
-
-size_t
-strcspn(const char *s, const char *reject)
-{
-  return strxspn(s, reject, 1);
-}
-
-char *
-strpbrk(const char *s, const char *accept)
-{
-  const char *ss = s+strxspn(s, accept, 1);
-  
-  return *ss ? (char *)ss : NULL;
-}
-