[dpdk-dev] [PATCH v2 01/24] lib/librte_eal: import libbsd strlcpy

Andy Green andy at warmcat.com
Fri May 11 03:58:59 CEST 2018


Signed-off-by: Andy Green <andy at warmcat.com>
---
 lib/librte_eal/common/eal_common_string_fns.c  |   34 ++++++++++++++++++++++++
 lib/librte_eal/common/include/rte_string_fns.h |    7 +----
 2 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_string_fns.c b/lib/librte_eal/common/eal_common_string_fns.c
index 6ac5f8289..275f6fd03 100644
--- a/lib/librte_eal/common/eal_common_string_fns.c
+++ b/lib/librte_eal/common/eal_common_string_fns.c
@@ -38,3 +38,37 @@ rte_strsplit(char *string, int stringlen,
 	errno = EINVAL;
 	return -1;
 }
+
+/*
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller at courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ */
+
+size_t
+rte_strlcpy(char *dst, const char *src, size_t siz)
+{
+	char *d = dst;
+	const char *s = src;
+	size_t n = siz;
+
+	/* Copy as many bytes as will fit */
+	if (n != 0) {
+		while (--n != 0) {
+			if ((*d++ = *s++) == '\0')
+				break;
+		}
+	}
+
+	/* Not enough room in dst, add NUL and traverse rest of src */
+	if (n == 0) {
+		if (siz != 0)
+			*d = '\0';		/* NUL-terminate dst */
+		while (*s++)
+			;
+	}
+
+	return(s - src - 1);	/* count does not include NUL */
+}
diff --git a/lib/librte_eal/common/include/rte_string_fns.h b/lib/librte_eal/common/include/rte_string_fns.h
index fcbb42e00..d4389bcf4 100644
--- a/lib/librte_eal/common/include/rte_string_fns.h
+++ b/lib/librte_eal/common/include/rte_string_fns.h
@@ -52,11 +52,8 @@ rte_strsplit(char *string, int stringlen,
  * DPDK-specific version of strlcpy for systems without
  * libc or libbsd copies of the function
  */
-static inline size_t
-rte_strlcpy(char *dst, const char *src, size_t size)
-{
-	return snprintf(dst, size, "%s", src);
-}
+size_t
+rte_strlcpy(char *dst, const char *src, size_t size);
 
 /* pull in a strlcpy function */
 #ifdef RTE_EXEC_ENV_BSDAPP



More information about the dev mailing list