// This code is Public Domain. Use, modify, and redistribute at will.
// ----------------------------------------------------------------------------
-void * memmove( void * s1, const void * s2, size_t n ) { /* TODO */ };
+#include <string.h>
-/* PDPC code - unreviewed
+void * memmove( void * dest, const void * src, size_t n )
{
- char *p = s1;
- const char *cs2 = s2;
- size_t x;
-
- if (p <= cs2)
+ const char * src_p = (const char *) src;
+ char * dest_p = (char *) dest;
+ if ( dest_p < src_p )
{
- for (x=0; x < n; x++)
+ while ( n-- )
{
- *p = *cs2;
- p++;
- cs2++;
+ *dest_p++ = *src_p++;
}
}
else
{
- if (n != 0)
+ src_p += n;
+ dest_p += n;
+ while ( n-- )
{
- for (x=n-1; x > 0; x--)
- {
- *(p+x) = *(cs2+x);
- }
+ *dest_p-- = *src_p--;
}
- *(p+x) = *(cs2+x);
}
- return (s1);
+ return dest;
}
-*/
\ No newline at end of file
// This code is Public Domain. Use, modify, and redistribute at will.
// ----------------------------------------------------------------------------
-void * memset( void * s, int c, size_t n ) { /* TODO */ };
+#include <string.h>
-/* Therx code
+void * memset( void * dest, int c, size_t n )
{
- unsigned short * tmp = (unsigned short *) s; // TODO: unsigned short?
- for( ; n != 0; n-- )
+ unsigned char ch = (unsigned char) c;
+ unsigned char * dest_p = (unsigned char *) dest;
+ while ( n-- )
{
- *tmp++ = c;
+ *dest_p++ = ch;
}
- return s;
+ return dest;
}
-*/
-
-/* PDPC code - unreviewed
-{
- size_t x = 0;
-
- for (x = 0; x < n; x++)
- {
- *((char *)s + x) = (unsigned char)c;
- }
- return (s);
-}
-*/