libunix: add memmove()

This commit is contained in:
Laurent Vivier
2025-06-25 19:11:06 +00:00
parent 56e4e09c35
commit 6d70cfedd6
2 changed files with 32 additions and 1 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ LIBRARY = libunix.a
SOURCES = divsi3.S modsi3.S mulsi3.S udivsi3.S umodsi3.S free.c malloc.c \
memcpy.c memset.c printf.c putchar.c puts.c read.c sprintf.c \
strcpy.c strlen.c strncpy.c vsprintf.c write.c strcmp.c \
strncmp.c strtol.c strdup.c
strncmp.c strtol.c strdup.c memmove.c
HEADERS =
+31
View File
@@ -0,0 +1,31 @@
/*
*
* (c) 2025 Laurent Vivier <Laurent@Vivier.EU>
*
*/
#include <sys/types.h>
void *memmove(void *dest, const void *src, size_t n)
{
unsigned char *d = dest;
const unsigned char *s = src;
if (d == s || n == 0)
return dest;
if (d < s)
{
while (n--)
*d++ = *s++;
}
else
{
d += n;
s += n;
while (n--)
*--d = *--s;
}
return dest;
}