DPDK  21.02.0
rte_string_fns.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2019 Intel Corporation
3  */
4 
11 #ifndef _RTE_STRING_FNS_H_
12 #define _RTE_STRING_FNS_H_
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #include <stdio.h>
19 #include <string.h>
20 
21 #include <rte_common.h>
22 
49 int
50 rte_strsplit(char *string, int stringlen,
51  char **tokens, int maxtokens, char delim);
52 
58 static inline size_t
59 rte_strlcpy(char *dst, const char *src, size_t size)
60 {
61  return (size_t)snprintf(dst, size, "%s", src);
62 }
63 
69 static inline size_t
70 rte_strlcat(char *dst, const char *src, size_t size)
71 {
72  size_t l = strnlen(dst, size);
73  if (l < size)
74  return l + rte_strlcpy(&dst[l], src, size - l);
75  return l + strlen(src);
76 }
77 
78 /* pull in a strlcpy function */
79 #ifdef RTE_EXEC_ENV_FREEBSD
80 #ifndef __BSD_VISIBLE /* non-standard functions are hidden */
81 #define strlcpy(dst, src, size) rte_strlcpy(dst, src, size)
82 #define strlcat(dst, src, size) rte_strlcat(dst, src, size)
83 #endif
84 
85 #else /* non-BSD platforms */
86 #ifdef RTE_USE_LIBBSD
87 #include <bsd/string.h>
88 
89 #else /* no BSD header files, create own */
90 #define strlcpy(dst, src, size) rte_strlcpy(dst, src, size)
91 #define strlcat(dst, src, size) rte_strlcat(dst, src, size)
92 
93 #endif /* RTE_USE_LIBBSD */
94 #endif /* FREEBSD */
95 
116 ssize_t
117 rte_strscpy(char *dst, const char *src, size_t dsize);
118 
119 #ifdef __cplusplus
120 }
121 #endif
122 
123 #endif /* RTE_STRING_FNS_H */
int rte_strsplit(char *string, int stringlen, char **tokens, int maxtokens, char delim)
ssize_t rte_strscpy(char *dst, const char *src, size_t dsize)