]> pd.if.org Git - pdclib/blobdiff - functions/string/memmove.c
Re-import from Subversion.
[pdclib] / functions / string / memmove.c
index 9ecce5db20fa32741d4ab4164fa6214a38d3dde9..f7ed6c1656b38d43e3f0a5afb8478a8cf895efe2 100644 (file)
@@ -1,8 +1,31 @@
-// ----------------------------------------------------------------------------
-// $Id$
-// ----------------------------------------------------------------------------
-// Public Domain C Library - http://pdclib.sourceforge.net
-// This code is Public Domain. Use, modify, and redistribute at will.
-// ----------------------------------------------------------------------------
+/* ----------------------------------------------------------------------------
+ * $Id$
+ * ----------------------------------------------------------------------------
+ * Public Domain C Library - http://pdclib.sourceforge.net
+ * This code is Public Domain. Use, modify, and redistribute at will.
+ * --------------------------------------------------------------------------*/
 
-void * memmove( void * s1, const void * s2, size_t n ) { /* TODO */ };
+#include <__size_t.h>
+
+void * memmove( void * dest, const void * src, size_t n )
+{
+    const char * src_p = (const char *) src;
+    char * dest_p = (char *) dest;
+    if ( dest_p < src_p )
+    {
+        while ( n-- )
+        {
+            *dest_p++ = *src_p++;
+        }
+    }
+    else
+    {
+        src_p += n;
+        dest_p += n;
+        while ( n-- )
+        {
+            *dest_p-- = *src_p--;
+        }
+    }
+    return dest;
+}