OSDN Git Service

Enable to track git://github.com/monaka/binutils.git
[pf3gnuchains/pf3gnuchains3x.git] / winsup / mingw / mingwex / wmemmove.c
diff --git a/winsup/mingw/mingwex/wmemmove.c b/winsup/mingw/mingwex/wmemmove.c
new file mode 100644 (file)
index 0000000..3c545ac
--- /dev/null
@@ -0,0 +1,43 @@
+/*     This source code was extracted from the Q8 package created and placed
+    in the PUBLIC DOMAIN by Doug Gwyn <gwyn@arl.mil>
+    last edit: 1999/11/05      gwyn@arl.mil
+
+    Implements subclause 7.24 of ISO/IEC 9899:1999 (E).
+
+       It supports an encoding where all char codes are mapped
+       to the *same* code values within a wchar_t or wint_t,
+       so long as no other wchar_t codes are used by the program.
+
+*/
+
+#include       <errno.h>
+#include       <stdio.h>
+#include       <stdlib.h>
+#include       <wchar.h>
+
+wchar_t *
+wmemmove(s1, s2, n)
+       register wchar_t                *s1;
+       register const wchar_t  *s2;
+       register size_t                 n;
+       {
+       wchar_t                         *orig_s1 = s1;
+
+       if ( s1 == NULL || s2 == NULL || n == 0 )
+               return orig_s1;         /* robust */
+
+       /* XXX -- The following test works only within a flat address space! */
+       if ( s2 >= s1 )
+               for ( ; n > 0; --n )
+                       *s1++ = *s2++;
+       else    {
+               s1 += n;
+               s2 += n;
+
+               for ( ; n > 0; --n )
+                       *--s1 = *--s2;
+               }
+
+       return orig_s1;
+       }
+