// 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 );
}
-*/
// 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
// 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;
}
-*/
// 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;
+ }
}
-*/
// 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));
-}
-*/
// 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;
}
-*/
// 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 );
}
-*/
// 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
// 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;
}
-*/
// 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;
}
-*/
// 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;
}
-*/
// 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;
}
-*/