lib: move strlcat()
authorJan Beulich <jbeulich@suse.com>
Thu, 22 Apr 2021 12:49:10 +0000 (14:49 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 22 Apr 2021 12:49:10 +0000 (14:49 +0200)
Allow the function to be individually linkable, discardable, and
overridable.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Julien Grall <jgrall@amazon.com>
xen/common/string.c
xen/lib/Makefile
xen/lib/strlcat.c [new file with mode: 0644]

index 84af23270da70f9251296e8b465dc4df9a1fd060..6042262b4963c8428a52525a8aac0cfb3c6bd549 100644 (file)
@@ -56,35 +56,6 @@ int (strcasecmp)(const char *s1, const char *s2)
 }
 #endif
 
-#ifndef __HAVE_ARCH_STRLCAT
-/**
- * strlcat - Append a %NUL terminated string into a sized buffer
- * @dest: Where to copy the string to
- * @src: Where to copy the string from
- * @size: size of destination buffer
- *
- * Compatible with *BSD: the result is always a valid
- * NUL-terminated string that fits in the buffer (unless,
- * of course, the buffer size is zero).
- */
-size_t strlcat(char *dest, const char *src, size_t size)
-{
-       size_t slen = strlen(src);
-       size_t dlen = strnlen(dest, size);
-       char *p = dest + dlen;
-
-       while ((p - dest) < size)
-               if ((*p++ = *src++) == '\0')
-                       break;
-
-       if (dlen < size)
-               *(p-1) = '\0';
-
-       return slen + dlen;
-}
-EXPORT_SYMBOL(strlcat);
-#endif
-
 #ifndef __HAVE_ARCH_STRCHR
 /**
  * strchr - Find the first occurrence of a character in a string
index ed1d2e47d49c141153baacbc83e078e9f0bbb041..0c6c726adf63acdb02a596bf9b6b73f7db4040c2 100644 (file)
@@ -15,6 +15,7 @@ lib-y += parse-size.o
 lib-y += rbtree.o
 lib-y += sort.o
 lib-y += strcmp.o
+lib-y += strlcat.o
 lib-y += strlcpy.o
 lib-y += strlen.o
 lib-y += strncmp.o
diff --git a/xen/lib/strlcat.c b/xen/lib/strlcat.c
new file mode 100644 (file)
index 0000000..ec32be4
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *  Copyright (C) 1991, 1992  Linus Torvalds
+ */
+
+#include <xen/string.h>
+
+/**
+ * strlcat - Append a %NUL terminated string into a sized buffer
+ * @dest: Where to copy the string to
+ * @src: Where to copy the string from
+ * @size: size of destination buffer
+ *
+ * Compatible with *BSD: the result is always a valid
+ * NUL-terminated string that fits in the buffer (unless,
+ * of course, the buffer size is zero).
+ */
+size_t strlcat(char *dest, const char *src, size_t size)
+{
+       size_t slen = strlen(src);
+       size_t dlen = strnlen(dest, size);
+       char *p = dest + dlen;
+
+       while ((p - dest) < size)
+               if ((*p++ = *src++) == '\0')
+                       break;
+
+       if (dlen < size)
+               *(p-1) = '\0';
+
+       return slen + dlen;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 8
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * End:
+ */