libc: remove 3 clause BSD code and replace from dLibs 1.20
authorAlan Cox <alan@linux.intel.com>
Wed, 20 May 2015 13:11:41 +0000 (14:11 +0100)
committerAlan Cox <alan@linux.intel.com>
Wed, 20 May 2015 13:11:41 +0000 (14:11 +0100)
Library/libs/memcmp.c
Library/libs/memcpy.c
Library/libs/memmove.c
Library/libs/memset.c
Library/libs/strlen.c
Library/libs/strncmp.c
Library/libs/strnlen.c

index e1fb209..67a6159 100644 (file)
@@ -1,22 +1,18 @@
-/*\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
index 5547d08..fd40304 100644 (file)
@@ -1,23 +1,10 @@
-/*
- * (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;
 }
index f3e12d8..1b16218 100644 (file)
@@ -1,32 +1,18 @@
-/*
- * (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;
 }
index 34ec4f4..5c837bb 100644 (file)
@@ -1,20 +1,10 @@
-/*\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
index 665cd49..568ce56 100644 (file)
@@ -1,18 +1,9 @@
-/*
- * (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;
 }
index 0c296c7..5de303d 100644 (file)
@@ -1,26 +1,11 @@
-/*
- * (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;
 }
index 3c23d84..fa61f4a 100644 (file)
@@ -3,7 +3,6 @@
 size_t strnlen(const char *t, size_t n)
 {
        size_t ct = 0;
-       while (*t++ && ct++ < n)
-               t++;
+       while (*t++ && ct++ < n);
        return ct;
 }