[dpdk-dev] [PATCH v4 01/23] lib/librte_eal: import libbsd strlcpy
Andy Green
andy at warmcat.com
Mon May 14 07:09:32 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