Change CompileKeymapFromRules to take XkbRMLVOSet

Let's use a nice interface now that it's available from XKBrulescommon.h.
master
Dan Nicholson 2009-04-08 17:54:55 -07:00
parent 6a84a34d86
commit babae38935
3 changed files with 19 additions and 14 deletions

View File

@ -126,7 +126,7 @@ typedef struct _XkbcDesc {
_XFUNCPROTOBEGIN
extern XkbcDescPtr
XkbcCompileKeymapFromRules(const char *rules, XkbRF_VarDefsPtr defs);
XkbcCompileKeymapFromRules(XkbRMLVOSet *rmlvo);
extern XkbcDescPtr
XkbcCompileKeymapFromComponents(XkbComponentNamesPtr ktcsg);

View File

@ -111,29 +111,35 @@ fail:
}
XkbcDescPtr
XkbcCompileKeymapFromRules(const char *rules, XkbRF_VarDefsPtr defs)
XkbcCompileKeymapFromRules(XkbRMLVOSet *rmlvo)
{
char rulesPath[PATH_MAX];
int pathlen;
XkbRF_VarDefsRec defs;
XkbComponentNamesPtr names;
XkbcDescPtr xkb;
if (ISEMPTY(rules) || !defs || ISEMPTY(defs->layout)) {
if (!rmlvo || ISEMPTY(rmlvo->rules) || ISEMPTY(rmlvo->layout)) {
ERROR("rules and layout required to generate XKB keymap\n");
return NULL;
}
pathlen = snprintf(rulesPath, sizeof(rulesPath),
DFLT_XKB_CONFIG_ROOT "/rules/%s", rules);
DFLT_XKB_CONFIG_ROOT "/rules/%s", rmlvo->rules);
if (pathlen >= sizeof(rulesPath)) {
ERROR("XKB rules path truncated\n");
return NULL;
}
names = XkbComponentsFromRules(rulesPath, defs);
defs.model = rmlvo->model;
defs.layout = rmlvo->layout;
defs.variant = rmlvo->variant;
defs.options = rmlvo->options;
names = XkbComponentsFromRules(rulesPath, &defs);
if (!names) {
ERROR("failed to generate XKB components from rules \"%s\"\n",
rules);
rmlvo->rules);
return NULL;
}

View File

@ -34,8 +34,7 @@ authorization from the authors.
int main(int argc, char *argv[])
{
char *rules = NULL;
XkbRF_VarDefsRec defs;
XkbRMLVOSet rmlvo;
XkbcDescPtr xkb;
/* Require rmlvo */
@ -46,16 +45,16 @@ int main(int argc, char *argv[])
exit(1);
}
rules = argv[1];
defs.model = argv[2];
defs.layout = argv[3];
defs.variant = argv[4];
defs.options = argv[5];
rmlvo.rules = argv[1];
rmlvo.model = argv[2];
rmlvo.layout = argv[3];
rmlvo.variant = argv[4];
rmlvo.options = argv[5];
uSetErrorFile(NULL);
XkbcInitAtoms();
xkb = XkbcCompileKeymapFromRules(rules, &defs);
xkb = XkbcCompileKeymapFromRules(&rmlvo);
if (!xkb) {
fprintf(stderr, "Failed to compile keymap\n");