# string
memcpy
+bcopy
+bzero
bcmp
memset
memchr
strnlen
strlen
strncpy
+strcat
strcpy
strchr
strrchr
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);
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
}
--- /dev/null
+/* 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__ */
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;
{
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);
+}