From fa2ca5f46ee1a47fd1ef92e1ad7365bf96625360 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Mon, 18 Sep 2006 07:11:43 +0000 Subject: [PATCH] * Fixed memcmp() prototype and implementation. --- kernel/kernel.c | 10 ++++++---- kernel/kernel.h | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/kernel/kernel.c b/kernel/kernel.c index fb7d84f..0073060 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -175,14 +175,16 @@ int strcasecmp(const char *s1, const char *s2) return (int)UPPER(*s1) - (int)UPPER(*s2); } -int memcmp(const char *s1, const char *s2, size_t n) +int memcmp(const void *_s1, const void *_s2, size_t n) { + unsigned char const *s1 = _s1, *s2 = _s2; + while(n--) { if(*s1 != *s2) - return *s1 - *s2; - *s1++; - *s2++; + return (int)*s1 - (int)*s2; + s1++; + s2++; } return 0; } diff --git a/kernel/kernel.h b/kernel/kernel.h index 2faac3f..2d671f8 100644 --- a/kernel/kernel.h +++ b/kernel/kernel.h @@ -85,7 +85,8 @@ void *memset(void *s, int c, size_t n); void *memcpy(void *dest, const void *src, size_t n); size_t strlen(const char *s); int strcasecmp(const char *s1, const char *s2); -int memcmp(const char *s1, const char *s2, size_t n); +int memcmp(const void *s1, const void *s2, size_t n); + /* stdarg.h functions */ typedef void * va_list; #define va_start(v,a) v = (void *)((uintptr_t)(&a) + sizeof(a))