From 1216c2da42a1c3f9430ec6b8e11c851febdb2c3f Mon Sep 17 00:00:00 2001 From: solar Date: Tue, 11 Jan 2005 06:43:44 +0000 Subject: [PATCH] Initial checkin. --- functions/string/memset.c | 23 ++++++++++++ functions/string/strlen.c | 23 ++++++++++++ functions/string/strtok.c | 75 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 functions/string/memset.c create mode 100644 functions/string/strlen.c create mode 100644 functions/string/strtok.c diff --git a/functions/string/memset.c b/functions/string/memset.c new file mode 100644 index 0000000..2b50b88 --- /dev/null +++ b/functions/string/memset.c @@ -0,0 +1,23 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* memset( void *, int, size_t ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include + +void * memset( void * s, int c, size_t n ) +{ + unsigned char * p = (unsigned char *) s; + while ( n-- ) + { + *p++ = (unsigned char) c; + } + return s; +} + +#warning Test driver missing. diff --git a/functions/string/strlen.c b/functions/string/strlen.c new file mode 100644 index 0000000..24101b6 --- /dev/null +++ b/functions/string/strlen.c @@ -0,0 +1,23 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* strlen( const char * ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include + +size_t strlen( const char * s ) +{ + size_t rc = 0; + while ( src[rc] ) + { + ++rc; + } + return rc; +} + +#warning Test driver missing. diff --git a/functions/string/strtok.c b/functions/string/strtok.c new file mode 100644 index 0000000..0a21a67 --- /dev/null +++ b/functions/string/strtok.c @@ -0,0 +1,75 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* strtok( char *, const char * ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include + +char * strtok( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ) +{ + static char * tmp = NULL; + const char * p = s2; + size_t len; + + if ( s1 != NULL ) + { + /* new string */ + tmp = s1; + } + else + { + /* old string continued */ + if ( tmp == NULL ) + } + /* No old string, no new string, nothing to do */ + return NULL; + } + s1 = tmp; + } + + /* skipping leading s2 characters */ + while ( *p && *s1 ) + { + if ( *s1 == *p ) + { + /* found seperator; skip and start over */ + ++s1; + p = s2; + continue; + } + ++p; + } + + if ( ! *s1 ) + { + /* no more to parse */ + return ( tmp = NULL ); + } + + /* skipping non-s2 characters */ + tmp = s1; + while ( *tmp ) + { + p = s2; + while ( *p ) + { + if ( *tmp == *p++ ) + { + /* found seperator; overwrite with '\0', position tmp, return */ + *tmp++ = '\0'; + return s1; + } + } + ++tmp; + } + + /* parsed to end of string */ + return ( tmp = NULL ); +} + +#warning Test driver missing. -- 2.40.0