[PATCH v4] telemetry: remove non-portable array initialization syntax
Bruce Richardson
bruce.richardson at intel.com
Wed Apr 5 10:56:24 CEST 2023
On Tue, Apr 04, 2023 at 11:09:16AM -0700, Tyler Retzlaff wrote:
> Use of ranges in designated initialization are a non-standard gcc
> extension.
>
> Only initialize '_' and '/' elements of the array and filter tests
> of characters through name with standard C isalnum before checking
> the array.
>
> Suggested-by: Konstantin Ananyev <konstantin.ananyev at huawei.com>
> Suggested-by: Bruce Richardson <bruce.richardson at intel.com>
> Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
The array should probably be "static", which was a miss in the original
version too.
> ---
> lib/telemetry/telemetry_data.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c
> index 2bac2de..0dc091a 100644
> --- a/lib/telemetry/telemetry_data.c
> +++ b/lib/telemetry/telemetry_data.c
> @@ -2,6 +2,7 @@
> * Copyright(c) 2020 Intel Corporation
> */
>
> +#include <ctype.h>
> #include <errno.h>
> #include <stdlib.h>
> #include <inttypes.h>
> @@ -152,17 +153,14 @@
> static bool
> valid_name(const char *name)
> {
> - char allowed[128] = {
> - ['0' ... '9'] = 1,
> - ['A' ... 'Z'] = 1,
> - ['a' ... 'z'] = 1,
> - ['_'] = 1,
> - ['/'] = 1,
> - };
> - while (*name != '\0') {
> + /* non-alpha-numeric characters allowed in names */
> + const char allowed[128] = { ['_'] = 1, ['/'] = 1 };
> +
> + for (; *name != '\0'; name++) {
> + if (isalnum(*name))
> + continue;
> if ((size_t)*name >= RTE_DIM(allowed) || allowed[(int)*name] == 0)
> return false;
> - name++;
> }
> return true;
> }
> --
> 1.8.3.1
>
More information about the dev
mailing list