On 31 Oct 2025, at 2:09, Changliang Wu wrote:
Thanks for following up, and sorry for the late response.
What about the following subject (should pass the check ;) ?
util: Add nullable string helpers and replace manual NULL checks.
Maybe the commit message could be something like:
Add two utility functions:
- str_is_null_or_empty()
- nullable_strlen()
In this patch, str_is_null_or_empty() is used to replace manual NULL
or empty string checks. nullable_strlen() is added for future use.
Cheers,
Eelco
> Add funtions:
> str_is_null_or_empty()
> nullable_strlen()
>
> Signed-off-by: Changliang Wu <[email protected]>
> ---
> lib/colors.c | 2 +-
> lib/lldp/lldp.c | 7 ++++---
> lib/util.h | 12 ++++++++++++
> 3 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/lib/colors.c b/lib/colors.c
> index 13456445e..2836c0c28 100644
> --- a/lib/colors.c
> +++ b/lib/colors.c
> @@ -117,7 +117,7 @@ colors_parse_from_env(const struct color_key color_dic[])
> token != NULL;
> token = strsep(&s, ":")) {
> char *name = strsep(&token, "=");
> - for (char *ptr = token; ptr != NULL && *ptr != '\0'; ptr++) {
> + for (char *ptr = token; !str_is_null_or_empty(ptr); ptr++) {
> /* We accept only decimals and ';' for color marker. */
> if (*ptr == ';' || (*ptr >= '0' && *ptr <= '9')) {
> continue;
> diff --git a/lib/lldp/lldp.c b/lib/lldp/lldp.c
> index 6fdcfef56..86e0381d6 100644
> --- a/lib/lldp/lldp.c
> +++ b/lib/lldp/lldp.c
> @@ -28,6 +28,7 @@
> #include "compiler.h"
> #include "dp-packet.h"
> #include "packets.h"
> +#include "util.h"
>
> VLOG_DEFINE_THIS_MODULE(lldp);
>
> @@ -191,14 +192,14 @@ lldp_send(struct lldpd *global OVS_UNUSED,
> lldp_tlv_end(p, start);
>
> /* System name */
> - if (chassis->c_name && *chassis->c_name != '\0') {
> + if (!str_is_null_or_empty(chassis->c_name)) {
> lldp_tlv_start(p, LLDP_TLV_SYSTEM_NAME, &start);
> dp_packet_put(p, chassis->c_name, strlen(chassis->c_name));
> lldp_tlv_end(p, start);
> }
>
> /* System description (skip it if empty) */
> - if (chassis->c_descr && *chassis->c_descr != '\0') {
> + if (!str_is_null_or_empty(chassis->c_descr)) {
> lldp_tlv_start(p, LLDP_TLV_SYSTEM_DESCR, &start);
> dp_packet_put(p, chassis->c_descr, strlen(chassis->c_descr));
> lldp_tlv_end(p, start);
> @@ -231,7 +232,7 @@ lldp_send(struct lldpd *global OVS_UNUSED,
> }
>
> /* Port description */
> - if (port->p_descr && *port->p_descr != '\0') {
> + if (!str_is_null_or_empty(port->p_descr)) {
> lldp_tlv_start(p, LLDP_TLV_PORT_DESCR, &start);
> dp_packet_put(p, port->p_descr, strlen(port->p_descr));
> lldp_tlv_end(p, start);
> diff --git a/lib/util.h b/lib/util.h
> index ef993626a..e0613ae9c 100644
> --- a/lib/util.h
> +++ b/lib/util.h
> @@ -197,6 +197,18 @@ void free_pagealign(void *);
> OVS_RETURNS_NONNULL void *xmalloc_size_align(size_t, size_t) MALLOC_LIKE;
> void free_size_align(void *);
>
> +static inline bool
> +str_is_null_or_empty(const char *s)
> +{
> + return !s || *s == '\0';
> +}
> +
> +static inline int
> +nullable_strlen(const char *s)
> +{
> + return s ? strlen(s) : 0;
> +}
> +
> /* The C standards say that neither the 'dst' nor 'src' argument to
> * memcpy() may be null, even if 'n' is zero. This wrapper tolerates
> * the null case. */
> --
> 2.43.5
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev