]> pd.if.org Git - pdclib/commitdiff
Reviewed.
authorsolar <unknown>
Sun, 18 Jan 2004 20:05:11 +0000 (20:05 +0000)
committersolar <unknown>
Sun, 18 Jan 2004 20:05:11 +0000 (20:05 +0000)
12 files changed:
functions/string/strcoll.c
functions/string/strcpy.c
functions/string/strcspn.c
functions/string/strerror.c
functions/string/strlen.c
functions/string/strncat.c
functions/string/strncmp.c
functions/string/strncpy.c
functions/string/strpbrk.c
functions/string/strrchr.c
functions/string/strspn.c
functions/string/strstr.c

index 80ecbdff24d4977add1e4a88d85d1f51fb42757a..c89b8cfd3bdc88bc1829ad014a5b39a372d3a492 100644 (file)
@@ -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 );
 }
-*/
index 03b8563393f53d141a99b6109fd4c681fb1c341f..94f54b40efc730ebd9074deb19d6b249f8d360f1 100644 (file)
@@ -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
index c2db7ab32abc73b2bac4349ae1b868417875720e..70b978824e7d6973df4a393c678aad6cb47daad5 100644 (file)
@@ -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;
 }
-*/
index 252671413656e57060d022a22cf1d93ce9e41f0a..2fdacdba5431bfc1eb73215bd612f477a5c50d22 100644 (file)
@@ -5,11 +5,26 @@
 // This code is Public Domain. Use, modify, and redistribute at will.
 // ----------------------------------------------------------------------------
 
-char * strerror( int errcode ) { /* TODO */ };
+#include <errno.h>
 
-/* 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;
+    }
 }
-*/
index 9dfc38fed0a058172142e2441820e6b2aaffa1c0..ec0c21e7134a8c96edbac8b28d353c2592b1abdf 100644 (file)
@@ -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));
-}
-*/
index 1bc202398636595fb72da31940acc6c4d47bdd88..d168e6e8e02ecb2a056cf993bb9b4ca811856c2d 100644 (file)
@@ -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;
 }
-*/
index ec9c56fb2a780e1a2a40efee5451c4c7836975df..b6a98cecf77caa278aa6204691ca314168678bce 100644 (file)
@@ -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 );
 }
-*/
index fd6e5d26b14fac318eacaf63ea17cca845755ca3..3784df4dcdf2c8fbc722adb5455230567bf21b12 100644 (file)
@@ -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
index 810e40ca40b9f5b51b4e708f3699773b777c90de..9c4fe78f40c1c3d3164f764ae1d2b7f78b24bc68 100644 (file)
@@ -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;
 }
-*/
index 77504433f9182a0066e821e65dd139e7c24df052..6ce1a3231de2f67bc7be3c5994cecfe165ba1244 100644 (file)
@@ -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;
 }
-*/
index 6b0e586b79f661152d774d7ccbb1c28888649628..f8f89e1ef6a632e106c6a7c3566bc61dfbc07c93 100644 (file)
@@ -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;
 }
-*/
index a1f8b74b329c428f1e825acfdaa568bda6c75c09..55f1db60dab91bf4a886fdc37ab099ec10ac0de9 100644 (file)
@@ -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;
 }
-*/