xkbcomp: Generating components requires rules _and_ layout
authorDan Nicholson <dbn.lists@gmail.com>
Sat, 4 Apr 2009 17:02:39 +0000 (10:02 -0700)
committerDan Nicholson <dbn.lists@gmail.com>
Sat, 4 Apr 2009 17:02:39 +0000 (10:02 -0700)
This came from trial and error, but it seems that you can generate a
valid keymap with only rules and layout.

src/xkbcomp/xkbcomp.c

index bab4403..92caf54 100644 (file)
@@ -40,6 +40,8 @@ authorization from the authors.
 unsigned int debugFlags = 0;
 unsigned int warningLevel = 0;
 
+#define ISEMPTY(str) (!(str) || (strlen(str) == 0))
+
 static int
 XkbFileFromComponents(const XkbComponentNamesPtr ktcsg, XkbFile **file)
 {
@@ -112,8 +114,8 @@ XkbcCompileKeymapFromRules(const char *rules, XkbRF_VarDefsPtr defs)
     XkbComponentNamesPtr names;
     XkbcDescPtr xkb;
 
-    if (!rules || strlen(rules) == 0) {
-        ERROR("no rules supplied for generating XKB keymap\n");
+    if (ISEMPTY(rules) || ISEMPTY(defs->layout)) {
+        ERROR("rules and layout required to generate XKB keymap\n");
         return NULL;
     }