diff options
author | Peter Hutterer <peter.hutterer@redhat.com> | 2008-12-03 15:06:37 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@redhat.com> | 2008-12-03 16:10:40 +1000 |
commit | 463e02e7de5da3e582a3a049110a476713c7210e (patch) | |
tree | 7cc2447f106137edabb53269d4f4f5c7d8ae1fac | |
parent | e670fd889607fa712876218882cd4a9b46937661 (diff) |
xkb: Allow NULL as rulesFile in XkbSetRulesDflts.
If no rules file is given, simply re-use the previous one. If no RF is given
the first time this function is called, use the built-in default.
This includes fixing the built-in default to something that actually exists.
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
-rw-r--r-- | xkb/xkbInit.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 35da3e9ac..c5d0a0638 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -95,3 +95,3 @@ typedef struct _SrvXkmInfo { #ifndef XKB_DFLT_RULES_FILE -#define XKB_DFLT_RULES_FILE "rules" +#define XKB_DFLT_RULES_FILE "base" #endif @@ -242,2 +242,10 @@ XkbSetRulesUsed(XkbRF_VarDefsPtr defs) +/** + * Set the default RMLVO for the next device to be initialised. + * If a parameter is NULL, the previous setting will be used. Use empty + * strings if you want to delete a previous setting. + * + * If @rulesFile is NULL and no previous @rulesFile has been set, the + * built-in default is chosen as default. + */ _X_EXPORT void @@ -246,6 +254,17 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout, { - if (XkbRulesFile) - _XkbFree(XkbRulesFile); - XkbRulesFile= _XkbDupString(rulesFile); - rulesDefined= True; + if (!rulesFile && !XkbRulesFile) + { + LogMessage(X_WARNING, "[xkb] No rule given, and no previous rule " + "defined. Defaulting to '%s'.\n", + XKB_DFLT_RULES_FILE); + rulesFile = XKB_DFLT_RULES_FILE; + } + + if (rulesFile) { + if (XkbRulesFile) + _XkbFree(XkbRulesFile); + XkbRulesFile= _XkbDupString(rulesFile); + rulesDefined= True; + } + if (model) { |