From 19b4cc9a30c2ede7a0cd6c417b5f26851376b708 Mon Sep 17 00:00:00 2001 From: solar Date: Sun, 18 Jan 2004 20:05:11 +0000 Subject: [PATCH] Reviewed. --- functions/string/strcoll.c | 9 +++++---- functions/string/strcpy.c | 20 ++++--------------- functions/string/strcspn.c | 27 +++++++++++++------------ functions/string/strerror.c | 25 +++++++++++++++++++----- functions/string/strlen.c | 23 ++++++---------------- functions/string/strncat.c | 24 ++++++++++------------- functions/string/strncmp.c | 25 ++++++++++-------------- functions/string/strncpy.c | 23 ++++++++-------------- functions/string/strpbrk.c | 36 +++++++++++++--------------------- functions/string/strrchr.c | 33 +++++++++++++------------------ functions/string/strspn.c | 33 +++++++++++++++++-------------- functions/string/strstr.c | 39 ++++++++++++++----------------------- 12 files changed, 136 insertions(+), 181 deletions(-) diff --git a/functions/string/strcoll.c b/functions/string/strcoll.c index 80ecbdf..c89b8cf 100644 --- a/functions/string/strcoll.c +++ b/functions/string/strcoll.c @@ -5,10 +5,11 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -int strcoll( const char * s1, const char * s2 ) { /* TODO */ }; +// TODO: Dummy function, does not support locales. -/* PDPC code - unreviewed +int strcmp( const char * src_1, const char * src_2 ); + +int strcoll( const char * src_1, const char * src_2 ) { - return (strcmp(s1, s2)); + return strcmp( src_1, src_2 ); } -*/ diff --git a/functions/string/strcpy.c b/functions/string/strcpy.c index 03b8563..94f54b4 100644 --- a/functions/string/strcpy.c +++ b/functions/string/strcpy.c @@ -5,24 +5,12 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -char * strcpy( char * restrict s1, const char * restrict s2 ) { /* TODO */ }; - -/* Therx code - unreviewed +char * strcpy( char * restrict dest, const char * restrict src ) { - while (*s1++ = *s2++) + char * tmp = dest; + while ( ( *dest++ = *src++ ) != '\0' ) { // EMPTY } - return s1; -} -*/ - -/* PDPC code - unreviewed -char *strcpy(char *s1, const char *s2) -{ - char *p = s1; - - while ((*p++ = *s2++) != '\0') ; - return (s1); + return tmp; } -*/ \ No newline at end of file diff --git a/functions/string/strcspn.c b/functions/string/strcspn.c index c2db7ab..70b9788 100644 --- a/functions/string/strcspn.c +++ b/functions/string/strcspn.c @@ -5,24 +5,23 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -size_t strcspn( const char * s1, const char * s2 ) { /* TODO */ }; +#include <__size_t.h> -/* PDPC code - unreviewed +size_t strcspn( const char * src_1, const char * src_2 ) { - const char *p1; - const char *p2; - - p1 = s1; - while (*p1 != '\0') + size_t len = 0; + const char * src_p; + while ( src_1[len] != '\0' ) { - p2 = s2; - while (*p2 != '\0') + src_p = src_2; + while ( *src_p != '\0' ) { - if (*p1 == *p2) return ((size_t)(p1 - s1)); - p2++; + if ( src_1[len] == *src_p++ ) + { + return len; + } } - p1++; + ++len; } - return ((size_t)(p1 - s1)); + return len; } -*/ diff --git a/functions/string/strerror.c b/functions/string/strerror.c index 2526714..2fdacdb 100644 --- a/functions/string/strerror.c +++ b/functions/string/strerror.c @@ -5,11 +5,26 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -char * strerror( int errcode ) { /* TODO */ }; +#include -/* PDPC code - unreviewed +char * strerror( int errcode ) { - if (errnum == 0) return ("No error has occurred\n"); - else return ("An error has occurred\n"); + switch ( errcode ) + { + case 0: + return "no error"; + break; + case EDOM: + return "domain error"; + break; + case EILSEQ: + return "illegal sequence"; + break; + case ERANGE: + return "range error"; + break; + default: + return "unknown error"; + break; + } } -*/ diff --git a/functions/string/strlen.c b/functions/string/strlen.c index 9dfc38f..ec0c21e 100644 --- a/functions/string/strlen.c +++ b/functions/string/strlen.c @@ -5,25 +5,14 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -size_t strlen( const char * s ) { /* TODO */ }; +#include <__size_t.h> -/* Therx code +size_t strlen( const char * src ) { - const char * start = s1; - while (*s1) + size_t len = 0; + while ( src[len] != '\0' ) { - s1++; + ++len; } - return s1 - start; + return len; } -*/ - -/* PDPC code - unreviewed -{ - const char *p; - - p = s; - while (*p != '\0') p++; - return ((size_t)(p - s)); -} -*/ diff --git a/functions/string/strncat.c b/functions/string/strncat.c index 1bc2023..d168e6e 100644 --- a/functions/string/strncat.c +++ b/functions/string/strncat.c @@ -5,22 +5,18 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -char * strncat( char * restrict s1, const char * restrict s2, size_t n ) { /* TODO */ }; +#include <__size_t.h> -/* PDPC code - unreviewed +char * strncat( char * restrict dest, const char * restrict src, size_t n ) { - char *p = s1; - size_t x = 0; - - while (*p != '\0') p++; - while ((*s2 != '\0') && (x < n)) + char * tmp = dest; + while ( *dest != '\0' ) { - *p = *s2; - p++; - s2++; - x++; + ++dest; } - *p = '\0'; - return (s1); + while ( ( n-- > 0 ) && ( *src != '\0' ) ) + { + *dest++ = *src++; + } + return tmp; } -*/ diff --git a/functions/string/strncmp.c b/functions/string/strncmp.c index ec9c56f..b6a98ce 100644 --- a/functions/string/strncmp.c +++ b/functions/string/strncmp.c @@ -5,23 +5,18 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -int strncmp( const char * s1, const char * s2, size_t n ) { /* TODO */ }; +#include <__size_t.h> -/* PDPC code - unreviewed +int strncmp( const char * src_1, const char * src_2, size_t n ) { - const unsigned char *p1; - const unsigned char *p2; - size_t x = 0; - - p1 = (const unsigned char *)s1; - p2 = (const unsigned char *)s2; - while (x < n) + while ( ( n-- != 0 ) && ( *src_1 == *src_2 ) ) { - if (p1[x] < p2[x]) return (-1); - else if (p1[x] > p2[x]) return (1); - else if (p1[x] == '\0') return (0); - x++; + ++src_1; + ++src_2; } - return (0); + if ( ( n == 0 ) ) + { + return 0; + } + return ( *src_1 - *src_2 ); } -*/ diff --git a/functions/string/strncpy.c b/functions/string/strncpy.c index fd6e5d2..3784df4 100644 --- a/functions/string/strncpy.c +++ b/functions/string/strncpy.c @@ -5,25 +5,18 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -char * strncpy( char * restrict s1, const char * restrict s2, size_t n ) { /* TODO */ }; +#include <__size_t.h> -/* PDPC code - unreviewed -char *strncpy(char *s1, const char *s2, size_t n) +char * strncpy( char * restrict dest, const char * restrict src, size_t n ) { - char *p = s1; - size_t x; - - for (x=0; x < n; x++) + char * tmp = dest; + while ( ( n-- != 0 ) && ( ( *dest++ = *src++ ) != '\0' ) ) { - *p = *s2; - if (*s2 == '\0') break; - p++; - s2++; + // EMPTY } - for (; x < n; x++) + while ( n-- != 0 ) { - *p++ = '\0'; + *dest++ = '\0'; } - return (s1); + return tmp; } -*/ \ No newline at end of file diff --git a/functions/string/strpbrk.c b/functions/string/strpbrk.c index 810e40c..9c4fe78 100644 --- a/functions/string/strpbrk.c +++ b/functions/string/strpbrk.c @@ -5,33 +5,23 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -// C++ - -const char * strpbrk( const char * s1, const char * s2 ) { /* TODO */ }; -char * strpbrk( char * s1, const char * s2 ) { /* TODO */ }; - -// ---------------------------------------------------------------------------- -// Standard C - -char * strpbrk( const char *s1, const char * s2 ) { /* TODO */ }; +#include <__NULL.h> -/* PDPC code - unreviewed +char * strpbrk( const char *src_1, const char * src_2 ) { - const char *p1; - const char *p2; - - p1 = s1; - while (*p1 != '\0') + const char * p1 = src_1; + const char * p2; + while ( *p1 != '\0' ) { - p2 = s2; - while (*p2 != '\0') + p2 = src_2; + while ( *p2 != '\0' ) { - if (*p1 == *p2) return ((char *)p1); - p2++; + if ( *p1 == *p2++ ) + { + return (char *) p1; + } } - p1++; + ++p1; } - return (NULL); + return NULL; } -*/ diff --git a/functions/string/strrchr.c b/functions/string/strrchr.c index 7750443..6ce1a32 100644 --- a/functions/string/strrchr.c +++ b/functions/string/strrchr.c @@ -5,27 +5,22 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -// C++ - -const char * strrchr( const char * s, int c ) { /* TODO */ }; -char * strrchr( char * s, int c ) { /* TODO */ }; - -// ---------------------------------------------------------------------------- -// Standard C +#include <__NULL.h> -char * strrchr( const char * s, int c ) { /* TODO */ }; - -/* PDPC code - unreviewed +char * strrchr( const char * src, int c ) { - const char *p; - - p = s + strlen(s); - while (p >= s) + const char * p = src; + while ( *p != '\0' ) + { + ++p; + } + while ( p >= src ) { - if (*p == (char)c) return ((char *)p); - p--; + if ( *p == (char) c ) + { + return (char *) p; + } + --p; } - return (NULL); + return NULL; } -*/ diff --git a/functions/string/strspn.c b/functions/string/strspn.c index 6b0e586..f8f89e1 100644 --- a/functions/string/strspn.c +++ b/functions/string/strspn.c @@ -5,25 +5,28 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -size_t strspn( const char * s1, const char * s2 ) { /* TODO */ }; +#include <__size_t.h> -/* PDPC code - unreviewed +size_t strspn( const char * src_1, const char * src_2 ) { - const char *p1; - const char *p2; - - p1 = s1; - while (*p1 != '\0') + size_t len = 0; + const char * p; + while ( src_1[ len ] != '\0' ) { - p2 = s2; - while (*p2 != '\0') + p = src_2; + while ( *p != '\0' ) { - if (*p1 == *p2) break; - p2++; + if ( *src_1 == *p ) + { + break; + } + ++p; } - if (*p2 == '\0') return ((size_t)(p1 - s1)); - p1++; + if ( *p == '\0' ) + { + return len; + } + ++len; } - return ((size_t)(p1 - s1)); + return len; } -*/ diff --git a/functions/string/strstr.c b/functions/string/strstr.c index a1f8b74..55f1db6 100644 --- a/functions/string/strstr.c +++ b/functions/string/strstr.c @@ -5,35 +5,26 @@ // This code is Public Domain. Use, modify, and redistribute at will. // ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -// C++ - -const char * strstr( const char * s1, const char * s2 ) { /* TODO */ }; -char * strstr( char * s1, const char * s2 ) { /* TODO */ }; - -// ---------------------------------------------------------------------------- -// Standard C +#include <__NULL.h> -char * strstr( const char * s1, const char * s2 ) { /* TODO */ }; - -/* PDPC code - unreviewed +char * strstr( const char * src_1, const char * src_2 ) { - const char *p = s1, *p1, *p2 = s2; - - while (*p) + const char * p1 = src_1; + const char * p2; + while ( *src_1 != '\0' ) { - if (*p == *s2) + p2 = src_2; + while ( ( *p2 != '\0' ) && ( *p1 == *p2 ) ) + { + ++p1; + ++p2; + } + if ( *p2 == '\0' ) { - p1 = p; - p2 = s2; - while ((*p2 != '\0') && (*p1++ == *p2++)) ; - if (*p2 == '\0') - { - return (char *)p; - } + return (char *) src_1; } - p++; + ++src_1; + p1 = src_1; } return NULL; } -*/ -- 2.40.0