-// ----------------------------------------------------------------------------
-// $Id$
-// ----------------------------------------------------------------------------
-// Public Domain C Library - http://pdclib.sourceforge.net
-// This code is Public Domain. Use, modify, and redistribute at will.
-// ----------------------------------------------------------------------------
+/* $Id$ */
-void * memmove( void * s1, const void * s2, size_t n ) { /* TODO */ };
+/* Release $Name$ */
-/* PDPC code - unreviewed
+/* memmove( void *, const void *, 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 <string.h>
+
+void * memmove( void * s1, const void * s2, size_t n )
{
- char *p = s1;
- const char *cs2 = s2;
- size_t x;
-
- if (p <= cs2)
+ char * dest = (char *) s1;
+ const char * src = (const char *) s2;
+ if ( dest < src )
{
- for (x=0; x < n; x++)
+ while ( n-- )
{
- *p = *cs2;
- p++;
- cs2++;
+ *dest++ = *src++;
}
}
else
{
- if (n != 0)
+ src += n;
+ dest += n;
+ while ( n-- )
{
- for (x=n-1; x > 0; x--)
- {
- *(p+x) = *(cs2+x);
- }
+ *dest-- = *src--;
}
- *(p+x) = *(cs2+x);
}
- return (s1);
+ return s1;
}
-*/
\ No newline at end of file
+
+#warning Test driver missing.