From: Peter Krempa Date: Wed, 24 Nov 2021 16:03:07 +0000 (+0100) Subject: internal: Add STRLIM macro for checking string length using strnlen() X-Git-Tag: v8.0.0-rc1~436 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8eb7471eb360f627e2b80bc75bd4552785b9625c;p=thirdparty%2Flibvirt.git internal: Add STRLIM macro for checking string length using strnlen() As a microoprimization when checking whether length of a string fits into a limit we don't necessarily need to calculate the full length but can use strnlen to check only LIMIT+1 chars. Add a macro which will simplify the expressions. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/internal.h b/src/internal.h index d3809bf057..2e404cd705 100644 --- a/src/internal.h +++ b/src/internal.h @@ -87,6 +87,15 @@ #define STRPREFIX(a, b) (strncmp(a, b, strlen(b)) == 0) #define STRCASEPREFIX(a, b) (g_ascii_strncasecmp(a, b, strlen(b)) == 0) #define STRSKIP(a, b) (STRPREFIX(a, b) ? (a) + strlen(b) : NULL) +/** + * STRLIM + * @str: pointer to a string (evaluated once) + * @lim: length limit (evaluated twice) + * + * Evaluates as true if length of @str doesn't exceed the limit @lim. Note + * that @lim + 1 characters may be accessed. + */ +#define STRLIM(str, lim) (strnlen((str), (lim) + 1) <= (lim)) #define STREQ_NULLABLE(a, b) (g_strcmp0(a, b) == 0) #define STRNEQ_NULLABLE(a, b) (g_strcmp0(a, b) != 0)