if (!ExprResolveGroup(spec, &rtrn))
return ReportMismatch(action, F_Group, "integer (range 1..8)");
- if ((rtrn.ival < 1) || (rtrn.ival > XkbNumKbdGroups))
- {
- ERROR("Illegal group %d (must be in the range 1..%d)\n", rtrn.ival,
- XkbNumKbdGroups);
- ACTION("Action %s definition ignored\n", XkbcActionTypeText(action));
- return False;
- }
if (value->op == OpNegate)
*grp_rtrn = -rtrn.ival;
else if (value->op == OpUnaryPlus)
ExprResolveGroup(ExprDef * expr,
ExprResult * val_rtrn)
{
+ int ret;
static LookupEntry group_names[] = {
{ "group1", 1 },
{ "group2", 2 },
{ NULL, 0 }
};
- return ExprResolveIntegerLookup(expr, val_rtrn, SimpleLookup,
- group_names);
+ ret = ExprResolveIntegerLookup(expr, val_rtrn, SimpleLookup, group_names);
+ if (ret == False)
+ return ret;
+
+ if (val_rtrn->uval == 0 || val_rtrn->uval > XkbNumKbdGroups) {
+ ERROR("Group index %d is out of range (1..%d)\n",
+ val_rtrn->uval, XkbNumKbdGroups);
+ return False;
+ }
+
+ return True;
}
int
ACTION("Definition with non-integer array index ignored\n");
return False;
}
- if ((tmp.uval < 1) || (tmp.uval > XkbNumKbdGroups))
- {
- ERROR("Group index for %s of key %s is out of range (1..%d)\n",
- name, longText(key->name), XkbNumKbdGroups + 1);
- ACTION("Ignoring %s for group %d\n", name, tmp.uval);
- return False;
- }
*ndx_rtrn = tmp.uval - 1;
return True;
}
free(tmp.str);
return False;
}
- else if ((ndx.uval < 1) || (ndx.uval > XkbNumKbdGroups))
- {
- ERROR
- ("Group index for type of key %s is out of range (1..%d)\n",
- longText(key->name), XkbNumKbdGroups + 1);
- ACTION("Ignoring type for group %d\n", ndx.uval);
- free(tmp.str);
- return False;
- }
else
{
key->types[ndx.uval - 1] = xkb_intern_atom(tmp.str);
ACTION("Definition with non-integer group ignored\n");
return False;
}
- if ((tmp.uval < 1) || (tmp.uval > XkbNumKbdGroups))
- {
- ERROR("Out-of-range (1..%d) group for redirect of key %s\n",
- XkbNumKbdGroups, longText(key->name));
- ERROR("Ignoring illegal group %d\n", tmp.uval);
- return False;
- }
key->groupInfo =
XkbSetGroupInfo(0, XkbRedirectIntoRange, tmp.uval - 1);
key->defs.defined |= _Key_GroupInfo;
ACTION("Definition with non-integer array index ignored\n");
return False;
}
- if ((tmp.uval < 1) || (tmp.uval > XkbNumKbdGroups))
- {
- ERROR
- ("Attempt to specify name for illegal group (must be 1..%d)\n",
- XkbNumKbdGroups + 1);
- ACTION("Name for group %d ignored\n", tmp.uval);
- return False;
- }
if (!ExprResolveString(value, &name))
{
ERROR("Group name must be a string\n");
ret = False;
}
else {
- if ((tmp.uval < 1) || (tmp.uval > XkbNumKbdGroups))
- {
- ERROR
- ("Out-of-range (1..%d) group for global groupsRedirect\n",
- XkbNumKbdGroups);
- ACTION("Ignoring illegal group %d\n", tmp.uval);
- ret = False;
- }
- else {
- info->groupInfo = XkbSetGroupInfo(0, XkbRedirectIntoRange,
- tmp.uval);
- ret = True;
- }
+ info->groupInfo = XkbSetGroupInfo(0, XkbRedirectIntoRange,
+ tmp.uval);
+ ret = True;
}
}
else if ((elem.str == NULL) && (uStrCaseCmp(field.str, "allownone") == 0))