Fix enum parameter checks
The enums weren't properly parsed when they were checked.
This commit is contained in:
@ -3164,14 +3164,26 @@ bool config_param_is_valid(const MXS_MODULE_PARAM *params, const char *key,
|
|||||||
case MXS_MODULE_PARAM_ENUM:
|
case MXS_MODULE_PARAM_ENUM:
|
||||||
if (params[i].accepted_values)
|
if (params[i].accepted_values)
|
||||||
{
|
{
|
||||||
|
char *endptr;
|
||||||
|
const char *delim = ", \t";
|
||||||
|
char buf[strlen(value) + 1];
|
||||||
|
strcpy(buf, value);
|
||||||
|
char *tok = strtok_r(buf, delim, &endptr);
|
||||||
|
|
||||||
|
while (tok)
|
||||||
|
{
|
||||||
|
valid = false;
|
||||||
|
|
||||||
for (int j = 0; params[i].accepted_values[j].name; j++)
|
for (int j = 0; params[i].accepted_values[j].name; j++)
|
||||||
{
|
{
|
||||||
if (strcmp(params[i].accepted_values[j].name, value) == 0)
|
if (strcmp(params[i].accepted_values[j].name, tok) == 0)
|
||||||
{
|
{
|
||||||
valid = true;
|
valid = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
tok = strtok_r(NULL, delim, &endptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user