]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/nolibc: Introduce strcat/bcopy/bzero functions
authorMarco Schlumpp <marco.schlumpp@gmail.com>
Tue, 22 Mar 2022 11:01:57 +0000 (12:01 +0100)
committerUnikraft <monkey@unikraft.io>
Thu, 4 May 2023 15:50:58 +0000 (15:50 +0000)
The bcopy/bzero originate from BSD, but are often provided by libc on
other systems for compatibility. The strcat function is also added for
improved compatibility.

Signed-off-by: Marco Schlumpp <marco.schlumpp@gmail.com>
Reviewed-by: Razvan Deaconescu <razvand@unikraft.io>
Reviewed-by: Marc Rittinghaus <marc.rittinghaus@unikraft.io>
Approved-by: Marc Rittinghaus <marc.rittinghaus@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #627

lib/nolibc/exportsyms.uk
lib/nolibc/include/string.h
lib/nolibc/include/strings.h [new file with mode: 0644]
lib/nolibc/string.c

index 7b4ad10c40fdd0fe5d202ac47759bf7255124e0e..c79deacc2dbf695a978acceb34bd3f3cfdb001b1 100644 (file)
@@ -51,6 +51,8 @@ qsort
 
 # string
 memcpy
+bcopy
+bzero
 bcmp
 memset
 memchr
@@ -60,6 +62,7 @@ memcmp
 strnlen
 strlen
 strncpy
+strcat
 strcpy
 strchr
 strrchr
index 63a302ab8479036f1ca0013f5cb90e4d2dad1d54..f61f9f2e54125f9487f1f21904d268ca4c6546cf 100644 (file)
@@ -66,6 +66,7 @@ char *strtok(char *restrict s, const char *restrict sep);
 char *strtok_r(char *restrict s, const char *restrict sep, char **restrict p);
 char *strndup(const char *str, size_t len);
 char *strdup(const char *str);
+char *strcat(char *restrict dest, const char *restrict src);
 char *strncat(char *dest, const char *src, size_t n);
 
 char *strerror_r(int errnum, char *buf, size_t buflen);
@@ -73,6 +74,9 @@ char *strerror(int errnum);
 
 char *strsignal(int sig);
 
+void bcopy(const void *from, void *to, size_t len);
+void bzero(void *buf, size_t len);
+int bcmp(const void *s1, const void *s2, size_t n);
 
 #ifdef __cplusplus
 }
diff --git a/lib/nolibc/include/strings.h b/lib/nolibc/include/strings.h
new file mode 100644 (file)
index 0000000..0055725
--- /dev/null
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright (c) 2022, Unikraft GmbH and The Unikraft Authors.
+ * Licensed under the BSD-3-Clause License (the "License").
+ * You may not use this file except in compliance with the License.
+ */
+
+#ifndef __STRINGS_H__
+#define __STRINGS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <string.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STRINGS_H__ */
index efe6b9386eecd52be29e00f9750ba65282774bf2..45abe5bda6246725610df466f994881314ca8754 100644 (file)
@@ -799,6 +799,12 @@ char *strerror(int errnum)
        return strerror_r(errnum, buf, sizeof(buf));
 }
 
+char *strcat(char *restrict dest, const char *restrict src)
+{
+       strcpy(dest + strlen(dest), src);
+       return dest;
+}
+
 char *strncat(char *dest, const char *src, size_t n)
 {
        char *a = dest;
@@ -818,3 +824,13 @@ int bcmp(const void *s1, const void *s2, size_t count)
 {
        return memcmp(s1, s2, count);
 }
+
+void bcopy(const void *from, void *to, size_t len)
+{
+       memmove(to, from, len);
+}
+
+void bzero(void *buf, size_t len)
+{
+       memset(buf, 0, len);
+}