-/*\r
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.\r
- * This file is licensed under the terms of the 3-clause BSD open source\r
- * license.\r
- */\r
-\r
#include <string.h>\r
\r
-int\r
-memcmp(const void *s1, const void *s2, size_t n)\r
+/* ANSIfied from dLibs 1.2 and handling of 0 length compare done as per\r
+ convention (equality) */\r
+\r
+int memcmp(const void *mem1, const void *mem2, size_t len)\r
{\r
- register const unsigned char *p1 = s1, *p2 = s2;\r
+ const signed char *p1 = mem1, *p2 = mem2;\r
+\r
+ if (!len)\r
+ return 0;\r
\r
- if (n) {\r
- n++;\r
- while (--n > 0) {\r
- if (*p1++ == *p2++) continue;\r
- return *--p1 - *--p2;\r
- }\r
+ while (--len && *p1 == *p2) {\r
+ p1++;\r
+ p2++;\r
}\r
- return 0;\r
+ return *p1 - *p2;\r
}\r
-/*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * This file is licensed under the terms of the 3-clause BSD open source
- * license.
- */
+#include <string.h>
-#include <string.h>
-
-void *
-memcpy(void *s1, const void *s2, register size_t n)
+void *memcpy(void *dest, const void *src, size_t len)
{
- register char *p1 = s1;
- register const char *p2 = s2;
-
-
- if (n) {
- n++;
- while (--n > 0) {
- *p1++ = *p2++;
- }
- }
- return s1;
+ uint8_t *dp = dest;
+ uint8_t *sp = src;
+ while(len-- > 0)
+ *dp++=*sp++;
+ return dest;
}
-/*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * This file is licensed under the terms of the 3-clause BSD open source
- * license.
- */
+/* From dLibs 1.20 but ANSIfied */
-#include <string.h>
-
-void *
-memmove(void *s1, const void *s2, register size_t n)
+void *memmove(void *dest, const void *source, size_t len)
{
- register char *p1 = s1;
- register const char *p2 = s2;
-
- if (n>0) {
- if (p2 <= p1 && p2 + n > p1) {
- /* overlap, copy backwards */
- p1 += n;
- p2 += n;
- n++;
- while (--n > 0) {
- *--p1 = *--p2;
- }
- } else {
- n++;
- while (--n > 0) {
- *p1++ = *p2++;
- }
- }
+ uint8_t *dp = dest;
+ uint8_t *sp = src;
+
+ if (sp < dp) {
+ dp += len;
+ sp += len;
+ while(len--)
+ *--dp = *--sp;
+ } else {
+ while(len--)
+ *dp++ = *sp++;
}
- return s1;
+ return dest;
}
-/*\r
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.\r
- * This file is licensed under the terms of the 3-clause BSD open source\r
- * license.\r
- */\r
-#include <string.h>\r
+#include <string.h>\r
\r
-void *\r
-memset(void *s, register int c, register size_t n)\r
+void *memset(void *dest, int data, size_t len)\r
{\r
- register char *s1 = s;\r
+ char *p = dest;\r
+ char v = (char)data;\r
\r
- if (n>0) {\r
- n++;\r
- while (--n > 0) {\r
- *s1++ = c;\r
- }\r
- }\r
- return s;\r
+ while(len--)\r
+ *p++ = v;\r
}\r
-/*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * This file is licensed under the terms of the 3-clause BSD open source
- * license.
- */
+#include <string.h>
-#include <string.h>
-
-size_t
-strlen(const char *org)
+size_t strlen(const char *t)
{
- register const char *s = org;
-
- while (*s++)
- /* EMPTY */ ;
-
- return --s - org;
+ size_t ct = 0;
+ while (*t++)
+ ct++;
+ return ct;
}
-/*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * This file is licensed under the terms of the 3-clause BSD open source
- * license.
- */
-
#include <string.h>
-int
-strncmp(register const char *s1, register const char *s2, register size_t n)
+/* ANSIfied from dLibs 1.2 */
+
+int strncmp(const char *str1, const char *str2, size_t limit)
{
- if (n) {
- do {
- if (*s1 != *s2++)
- break;
- if (*s1++ == '\0')
- return 0;
- } while (--n > 0);
- if (n > 0) {
- if (*s1 == '\0') return -1;
- if (*--s2 == '\0') return 1;
- return (unsigned char) *s1 - (unsigned char) *s2;
- }
- }
- return 0;
+ for(; ((--limit) && (*str1 == *str2)); ++str1, ++str2)
+ if (*str1 == '\0')
+ return 0;
+ return *str1 - *str2;
}
size_t strnlen(const char *t, size_t n)
{
size_t ct = 0;
- while (*t++ && ct++ < n)
- t++;
+ while (*t++ && ct++ < n);
return ct;
}