Open-code a radio group SimpleLookup
authorDaniel Stone <daniel@fooishbar.org>
Mon, 20 Feb 2012 16:04:37 +0000 (16:04 +0000)
committerDaniel Stone <daniel@fooishbar.org>
Mon, 20 Feb 2012 16:06:01 +0000 (16:06 +0000)
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 <daniel@fooishbar.org>
src/xkbcomp/symbols.c

index 08b9bd7..0b225cc 100644 (file)
@@ -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;
         }