eal: support strlcpy function
authorBruce Richardson <bruce.richardson@intel.com>
Mon, 12 Mar 2018 11:32:59 +0000 (11:32 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 4 Apr 2018 15:33:08 +0000 (17:33 +0200)
commit5364de644a4ba99497edbed05bff942b2b461413
tree05f7e30112eb0ba990c71eb0a5929ee42930f6b9
parent08f683174e9487654a4720b4b7540f36a07b0918
eal: support strlcpy function

The strncpy function is error prone for doing "safe" string copies, so
we generally try to use "snprintf" instead in the code. The function
"strlcpy" is a better alternative, since it better conveys the
intention of the programmer, and doesn't suffer from the non-null
terminating behaviour of it's n'ed brethern.

The downside of this function is that it is not available by default
on linux, though standard in the BSD's. It is available on most
distros by installing "libbsd" package.

This patch therefore provides the following in rte_string_fns.h to ensure
that strlcpy is available there:
* for BSD, include string.h as normal
* if RTE_USE_LIBBSD is set, include <bsd/string.h>
* if not set, fallback to snprintf for strlcpy

Using make build system, the RTE_USE_LIBBSD is a hard-coded value to "n",
but when using meson, it's automatically set based on what is available
on the platform.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
config/common_base
config/meson.build
devtools/cocci/strlcpy.cocci [new file with mode: 0644]
lib/librte_eal/common/include/rte_string_fns.h
mk/rte.app.mk