From 6c6e1091a151bdad97c1c67ad95407ff81c6ef8d Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 4 Mar 2012 17:10:52 +0100 Subject: [PATCH] Added memmove(3). --- libmaxsi/include/string.h | 2 +- libmaxsi/memory.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libmaxsi/include/string.h b/libmaxsi/include/string.h index 6f109b30..a7ed294e 100644 --- a/libmaxsi/include/string.h +++ b/libmaxsi/include/string.h @@ -36,6 +36,7 @@ __BEGIN_DECLS void* memchr(const void*, int, size_t); int memcmp(const void*, const void*, size_t); void* memcpy(void* restrict, const void* restrict, size_t); +void* memmove(void*, const void*, size_t); void* memset(void*, int, size_t); char* stpcpy(char* restrict, const char* restrict); char* strcat(char* restrict, const char* restrict); @@ -57,7 +58,6 @@ char* strtok_r(char* restrict, const char* restrict, char** restrict); /* TODO: These are not implemented in libmaxsi/sortix yet. */ #if defined(__SORTIX_SHOW_UNIMPLEMENTED) void* memccpy(void* restrict, const void* restrict, int, size_t); -void* memmove(void*, const void*, size_t); char* stpncpy(char* restrict, const char* restrict, size_t); int strcoll_l(const char*, const char*, locale_t); char* strerror_l(int, locale_t); diff --git a/libmaxsi/memory.cpp b/libmaxsi/memory.cpp index e31a85e9..357f51fc 100644 --- a/libmaxsi/memory.cpp +++ b/libmaxsi/memory.cpp @@ -52,6 +52,18 @@ namespace Maxsi { return SysGetPageSize(); } + + // TODO: This is a hacky implementation! + extern "C" void* memmove(void* _dest, const void* _src, size_t n) + { + uint8_t* dest = (uint8_t*) _dest; + const uint8_t* src = (const uint8_t*) _src; + uint8_t* tmp = new uint8_t[n]; + Memory::Copy(tmp, src, n); + Memory::Copy(dest, tmp, n); + delete[] tmp; + return _dest; + } #endif DUAL_FUNCTION(void*, memcpy, Copy, (void* Dest, const void* Src, size_t Length))