Don't duplicate string and ctype functions 2 (or even 3) times... we have stringlib for that

svn path=/trunk/; revision=17733
This commit is contained in:
Alex Ionescu 2005-09-08 04:27:02 +00:00
parent 7206207210
commit 6ce05ab58e
20 changed files with 155 additions and 457 deletions

View file

@ -12,10 +12,6 @@ void _assert( const char *expr, const char *file, int line ) {
__kernel_abort();
}
int isalnum( int x ) { return isalpha(x) || isdigit(x); }
int iscntrl( int x ) { return 32 > x; }
int ispunct( int x ) { return !isspace(x) && !isalnum(x) && !iscntrl(x) && !isspace(x); }
static int belongs_to_base( int x, int base ) {
if( x >= '0' && '9' >= x ) {
if( base > x - '0' ) return x - '0';

View file

@ -12,6 +12,7 @@
<library>intrlck</library>
<library>string</library>
<linkerflag>-lgcc</linkerflag>
<linkerflag>-nostdlib</linkerflag>
<linkerflag>-nostartfiles</linkerflag>
<directory name="csr">
<file>api.c</file>
@ -62,16 +63,6 @@
<file>wtoi.c</file>
<file>wtol.c</file>
</directory>
<directory name="string">
<file>ctype.c</file>
<file>memicmp.c</file>
<file>stricmp.c</file>
<file>strlwr.c</file>
<file>strnicmp.c</file>
<file>strstr.c</file>
<file>strupr.c</file>
<file>wstring.c</file>
</directory>
<directory name="def">
<file>ntdll.rc</file>
</directory>

View file

@ -1,25 +0,0 @@
/*
* The C RunTime DLL
*
* Implements C run-time functionality as known from UNIX.
*
* Copyright 1996,1998 Marcus Meissner
* Copyright 1996 Jukka Iivonen
* Copyright 1997 Uwe Bonnes
*/
#include <ntdll.h>
/*
* @implemented
*/
char * _strlwr(char *x)
{
char *y=x;
while (*y) {
*y=tolower(*y);
y++;
}
return x;
}

View file

@ -1,26 +0,0 @@
/*
* The C RunTime DLL
*
* Implements C run-time functionality as known from UNIX.
*
* Copyright 1996,1998 Marcus Meissner
* Copyright 1996 Jukka Iivonen
* Copyright 1997 Uwe Bonnes
*/
#include <ntdll.h>
/*
* @implemented
*/
char *_strupr(char *x)
{
char *y=x;
while (*y) {
*y=toupper(*y);
y++;
}
return x;
}

View file

@ -1,16 +1,5 @@
/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: lib/ntdll/rtl/ctype.c
* PURPOSE: Character type and conversion functions
* PROGRAMMERS: ???
* Eric Kohl
* HISTORY: ???: Created
* 29/12/1999: Added missing functions and changed
* all functions to use ctype table
*/
#include <ntdll.h>
#include <string.h>
#include <ctype.h>
#undef _pctype

View file

@ -1,5 +1,5 @@
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <ntdll.h>
#include <string.h>
#include <ctype.h>
/*
* @implemented

View file

@ -1,5 +1,5 @@
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <ntdll.h>
#include <string.h>
#include <ctype.h>
/*
* @implemented

View file

@ -59,9 +59,21 @@
The current implemention of rbuild generates a dependency rule
for each occurence of a file.
-->
<file>ctype.c</file>
<file>memccpy.c</file>
<file>memcmp.c</file>
<file>memicmp.c</file>
<file>strcspn.c</file>
<file>stricmp.c</file>
<file>strnicmp.c</file>
<file>strlwr.c</file>
<file>strrev.c</file>
<file>strset.c</file>
<file>strstr.c</file>
<file>strupr.c</file>
<file>strpbrk.c</file>
<file>strspn.c</file>
<file>wstring.c</file>
<file>wcsrev.c</file>
<file>wcsnset.c</file>
</module>

View file

@ -0,0 +1,17 @@
#include <string.h>
#include <ctype.h>
/*
* @implemented
*/
char * _strlwr(char *x)
{
char *y=x;
while (*y) {
*y=tolower(*y);
y++;
}
return x;
}

View file

@ -1,7 +1,8 @@
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <ntdll.h>
#include <string.h>
#include <ctype.h>
/*
* @implemented
*/
int _strnicmp(const char *s1, const char *s2, size_t n)

View file

@ -0,0 +1,24 @@
#include <string.h>
/*
* @implemented
*/
char * _strrev(char *s)
{
char *e;
char a;
e = s;
while (*e)
e++;
while (s<e)
{
a = *s;
*s = *e;
*e = a;
s++;
e--;
}
return s;
}

View file

@ -0,0 +1,33 @@
#include <string.h>
/*
* @implemented
*/
char* _strnset(char* szToFill, int szFill, size_t sizeMaxFill)
{
char *t = szToFill;
int i = 0;
while (*szToFill != 0 && i < (int) sizeMaxFill)
{
*szToFill = szFill;
szToFill++;
i++;
}
return t;
}
/*
* @implemented
*/
char* _strset(char* szToFill, int szFill)
{
char *t = szToFill;
while (*szToFill != 0)
{
*szToFill = szFill;
szToFill++;
}
return t;
}

View file

@ -1,5 +1,4 @@
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <ntdll.h>
#include <string.h>
/*
* @implemented

View file

@ -0,0 +1,17 @@
#include <string.h>
#include <ctype.h>
/*
* @implemented
*/
char *_strupr(char *x)
{
char *y=x;
while (*y) {
*y=toupper(*y);
y++;
}
return x;
}

View file

@ -0,0 +1,17 @@
#include <string.h>
/*
* @implemented
*/
wchar_t *_wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill)
{
wchar_t *t = wsToFill;
int i = 0;
while( *wsToFill != 0 && i < (int) sizeMaxFill)
{
*wsToFill = wcFill;
wsToFill++;
i++;
}
return t;
}

View file

@ -0,0 +1,22 @@
#include <string.h>
/*
* @implemented
*/
wchar_t *_wcsrev(wchar_t *s)
{
wchar_t *e;
wchar_t a;
e=s;
while (*e)
e++;
while (s<e)
{
a=*s;
*s=*e;
*e=a;
s++;
e--;
}
return s;
}

View file

@ -1,19 +1,5 @@
/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: lib/ntdll/string/wstring.c
* PURPOSE: Wide string functions
* PROGRAMMER: David Welch (welch@mcmail.com)
* UPDATE HISTORY:
* Created 22/05/98
* 1998/12/04 RJJ Cleaned up and added i386 def checks
*/
/* INCLUDES *****************************************************************/
#include <ntdll.h>
#include <string.h>
#include <ctype.h>
/* FUNCTIONS *****************************************************************/

View file

@ -314,7 +314,6 @@
</if>
<file>atom.c</file>
<file>capture.c</file>
<file>ctype.c</file>
<file>debug.c</file>
<file>libsupp.c</file>
<file>misc.c</file>
@ -323,10 +322,8 @@
<file>regio.c</file>
<file>sprintf.c</file>
<file>stdlib.c</file>
<file>string.c</file>
<file>strtok.c</file>
<file>swprintf.c</file>
<file>wstring.c</file>
</directory>
<directory name="se">
<file>access.c</file>

View file

@ -1,163 +0,0 @@
/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/rtl/string.c
* PURPOSE: Ascii string functions
*
* PROGRAMMERS: Eric Kohl (ekohl@abo.rhein-zeitung.de)
*/
/* INCLUDES *****************************************************************/
#include <internal/ctype.h>
#include <string.h>
/* FUNCTIONS *****************************************************************/
int _stricmp(const char *s1, const char *s2)
{
while (toupper(*s1) == toupper(*s2))
{
if (*s1 == 0)
return 0;
s1++;
s2++;
}
return toupper(*(unsigned const char *)s1) - toupper(*(unsigned const char *)(s2));
}
/*
* @implemented
*/
char * _strlwr(char *x)
{
char *y=x;
while (*y)
{
*y=tolower(*y);
y++;
}
return x;
}
/*
* @implemented
*/
int _strnicmp(const char *s1, const char *s2, size_t n)
{
if (n == 0)
return 0;
do
{
if (toupper(*s1) != toupper(*s2++))
return toupper(*(unsigned const char *)s1) - toupper(*(unsigned const char *)--s2);
if (*s1++ == 0)
break;
}
while (--n != 0);
return 0;
}
/*
* @implemented
*/
char* _strnset(char* szToFill, int szFill, size_t sizeMaxFill)
{
char *t = szToFill;
int i = 0;
while (*szToFill != 0 && i < (int) sizeMaxFill)
{
*szToFill = szFill;
szToFill++;
i++;
}
return t;
}
/*
* @implemented
*/
char * _strrev(char *s)
{
char *e;
char a;
e = s;
while (*e)
e++;
while (s<e)
{
a = *s;
*s = *e;
*e = a;
s++;
e--;
}
return s;
}
/*
* @implemented
*/
char* _strset(char* szToFill, int szFill)
{
char *t = szToFill;
while (*szToFill != 0)
{
*szToFill = szFill;
szToFill++;
}
return t;
}
/*
* @implemented
*/
char *_strupr(char *x)
{
char *y=x;
while (*y)
{
*y=toupper(*y);
y++;
}
return x;
}
/*
* @implemented
*/
char *strstr(const char *s, const char *find)
{
char c, sc;
size_t len;
if ((c = *find++) != 0)
{
len = strlen(find);
do
{
do
{
if ((sc = *s++) == 0)
return 0;
}
while (sc != c);
}
while (strncmp(s, find, len) != 0);
s--;
}
return (char *)s;
}

View file

@ -1,189 +0,0 @@
/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/rtl/wstring.c
* PURPOSE: Wide string functions
*
* PROGRAMMERS: David Welch (welch@cwcom.net)
*/
/* INCLUDES *****************************************************************/
#include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h>
/* FUNCTIONS *****************************************************************/
int _wcsicmp (const wchar_t* cs, const wchar_t* ct)
{
while (*cs != '\0' && *ct != '\0' && towupper(*cs) == towupper(*ct))
{
cs++;
ct++;
}
return *cs - *ct;
}
/*
* @implemented
*/
wchar_t *_wcslwr (wchar_t *x)
{
wchar_t *y=x;
while (*y)
{
*y=towlower(*y);
y++;
}
return x;
}
/*
* @implemented
*/
int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count)
{
if (count == 0)
return 0;
do {
if (towupper(*cs) != towupper(*ct++))
return towupper(*cs) - towupper(*--ct);
if (*cs++ == 0)
break;
} while (--count != 0);
return 0;
}
/*
* @implemented
*/
wchar_t *_wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill)
{
wchar_t *t = wsToFill;
int i = 0;
while( *wsToFill != 0 && i < (int) sizeMaxFill)
{
*wsToFill = wcFill;
wsToFill++;
i++;
}
return t;
}
/*
* @implemented
*/
wchar_t *_wcsrev(wchar_t *s)
{
wchar_t *e;
wchar_t a;
e=s;
while (*e)
e++;
while (s<e)
{
a=*s;
*s=*e;
*e=a;
s++;
e--;
}
return s;
}
/*
* @implemented
*/
wchar_t *_wcsupr(wchar_t *x)
{
wchar_t *y=x;
while (*y)
{
*y=towupper(*y);
y++;
}
return x;
}
/*
* @implemented
*/
size_t wcscspn(const wchar_t *str,const wchar_t *reject)
{
wchar_t *s;
wchar_t *t;
s=(wchar_t *)str;
do {
t=(wchar_t *)reject;
while (*t) {
if (*t==*s)
break;
t++;
}
if (*t)
break;
s++;
} while (*s);
return s-str; /* nr of wchars */
}
/*
* @implemented
*/
size_t wcsspn(const wchar_t *str,const wchar_t *accept)
{
wchar_t *s;
wchar_t *t;
s=(wchar_t *)str;
do
{
t=(wchar_t *)accept;
while (*t)
{
if (*t==*s)
break;
t++;
}
if (!*t)
break;
s++;
} while (*s);
return s-str; /* nr of wchars */
}
/*
* @implemented
*/
wchar_t *wcsstr(const wchar_t *s,const wchar_t *b)
{
wchar_t *x;
wchar_t *y;
wchar_t *c;
x=(wchar_t *)s;
while (*x)
{
if (*x==*b)
{
y=x;
c=(wchar_t *)b;
while (*y && *c && *y==*c)
{
c++;
y++;
}
if (!*c)
return x;
}
x++;
}
return NULL;
}