- Moved strspn and strcspn to the string library.

svn path=/trunk/; revision=4878
This commit is contained in:
Hartmut Birr
2003-06-09 20:27:14 +00:00
parent e9f3a8740c
commit 48be1aeb7d
11 changed files with 58 additions and 96 deletions
+3 -1
View File
@@ -1,4 +1,4 @@
# $Id: Makefile,v 1.3 2003/06/01 19:23:18 hbirr Exp $
# $Id: Makefile,v 1.4 2003/06/09 20:23:06 hbirr Exp $
PATH_TO_TOP = ../..
@@ -29,12 +29,14 @@ TARGET_OBJECTS = \
strchr.o \
strcmp.o \
strcpy.o \
strcspn.o \
strlen.o \
strncat.o \
strncmp.o \
strncpy.o \
strnlen.o \
strrchr.o \
strspn.o \
wcscat.o \
wcschr.o \
wcscmp.o \
+26
View File
@@ -0,0 +1,26 @@
/*
* $Id: strcspn.c,v 1.1 2003/06/09 20:23:06 hbirr Exp $
*/
#include <string.h>
size_t strcspn(const char *s1, const char *s2)
{
unsigned long char_map[8] = {0, 0, 0, 0, 0, 0, 0, 0};
register unsigned char* str = (unsigned char*)s1;
while (*s2)
{
char_map[*(unsigned char*)s2 / 32] |= (1 << (*(unsigned char*)s2 % 32));
s2++;
}
while (*str)
{
if (char_map[*str / 32] & (1 << (*str % 32)))
break;
str++;
}
return str - (unsigned char*)s1;
}
+25
View File
@@ -0,0 +1,25 @@
/*
* $Id: strspn.c,v 1.1 2003/06/09 20:23:06 hbirr Exp $
*/
#include <string.h>
size_t strspn(const char *s1, const char *s2)
{
unsigned long char_map[8] = {0, 0, 0, 0, 0, 0, 0, 0};
register unsigned char* str = (unsigned char*)s1;
while (*s2)
{
char_map[*(unsigned char*)s2 / 32] |= (1 << (*(unsigned char*)s2 % 32));
s2++;
}
while (*str)
{
if (!(char_map[*str / 32] & (1 << (*str % 32))))
break;
str++;
}
return str - (unsigned char*)s1;
}