From d32822e60f63bd69871458380116de248cba23c7 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Mon, 20 Feb 2012 16:04:37 +0000 Subject: [PATCH] Open-code a radio group SimpleLookup Because, joke's on you, it wasn't actually looking up radio groups. Just checking to see if it was a string that was "none", or an integer. Lord give me strength. Signed-off-by: Daniel Stone --- src/xkbcomp/symbols.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c index 08b9bd7..0b225cc 100644 --- a/src/xkbcomp/symbols.c +++ b/src/xkbcomp/symbols.c @@ -1100,11 +1100,6 @@ static LookupEntry repeatEntries[] = { {NULL, 0} }; -static LookupEntry rgEntries[] = { - {"none", 0}, - {NULL, 0} -}; - static Bool SetSymbolsField(KeyInfo * key, struct xkb_desc * xkb, @@ -1189,12 +1184,19 @@ SetSymbolsField(KeyInfo * key, Bool permanent = False; if (uStrCaseCmp(field, "permanentradiogroup") == 0) permanent = True; - ok = ExprResolveInteger(value, &tmp, SimpleLookup, - (char *) rgEntries); + if (ExprResolveString(value, &tmp)) { + ok = (strcmp(tmp.str, "none") == 0); + free(tmp.str); + if (ok) + tmp.uval = 0; + } + else { + ok = ExprResolveInteger(value, &tmp, NULL, 0); + } if (!ok) { ERROR("Illegal radio group specification for %s\n", - longText(key->name)); + longText(key->name)); ACTION("Non-integer radio group ignored\n"); return False; } -- 2.7.4