Use of ranges in designated initialization are a non-standard gcc extension. Use loops to initialize permitted characters on first use.
Signed-off-by: Tyler Retzlaff <roret...@linux.microsoft.com> --- lib/telemetry/telemetry_data.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c index 2bac2de..d845186 100644 --- a/lib/telemetry/telemetry_data.c +++ b/lib/telemetry/telemetry_data.c @@ -152,13 +152,21 @@ static bool valid_name(const char *name) { - char allowed[128] = { - ['0' ... '9'] = 1, - ['A' ... 'Z'] = 1, - ['a' ... 'z'] = 1, - ['_'] = 1, - ['/'] = 1, - }; + static bool initialized; + static char allowed[128]; + + if (!initialized) { + int index; + for (index = '0'; index <= '9'; index++) + allowed[index] = 1; + for (index = 'A'; index <= 'Z'; index++) + allowed[index] = 1; + for (index = 'a'; index <= 'Z'; index++) + allowed[index] = 1; + allowed[(int)'_'] = allowed[(int)'/'] = 1; + initialized = true; + } + while (*name != '\0') { if ((size_t)*name >= RTE_DIM(allowed) || allowed[(int)*name] == 0) return false; -- 1.8.3.1