xkb: add a call to init an XkbRMLVOSet from const chars

Just forcing everything to const char* is not helpful, compiler warnings are
supposed to warn about broken code. Forcing everything to const when it
clearly isn't less than ideal.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Peter Hutterer 2014-01-29 11:16:51 +10:00
parent 6307d60dd5
commit 2fc38d1e29
5 changed files with 52 additions and 25 deletions

View File

@ -777,13 +777,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
MessageType from; MessageType from;
const char *s; const char *s;
XkbRMLVOSet set; XkbRMLVOSet set;
const char *rules;
/* Default options. */
set.rules = "base";
set.model = "pc105";
set.layout = "us";
set.variant = NULL;
set.options = NULL;
/* /*
* Merge the ServerLayout and ServerFlags options. The former have * Merge the ServerLayout and ServerFlags options. The former have
@ -963,9 +957,15 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
* evdev rules set. */ * evdev rules set. */
#if defined(linux) #if defined(linux)
if (!xf86Info.forceInputDevices) if (!xf86Info.forceInputDevices)
set.rules = "evdev"; rules = "evdev";
else
#endif #endif
rules = "base";
/* Xkb default options. */
XkbInitRules(&set, rules, "pc105", "us", NULL, NULL);
XkbSetRulesDflts(&set); XkbSetRulesDflts(&set);
XkbFreeRMLVOSet(&set, FALSE);
xf86Info.useDefaultFontPath = TRUE; xf86Info.useDefaultFontPath = TRUE;
xf86Info.useDefaultFontPathFrom = X_DEFAULT; xf86Info.useDefaultFontPathFrom = X_DEFAULT;

View File

@ -30,11 +30,11 @@
/***====================================================================***/ /***====================================================================***/
typedef struct _XkbRMLVOSet { typedef struct _XkbRMLVOSet {
const char *rules; char *rules;
const char *model; char *model;
const char *layout; char *layout;
const char *variant; char *variant;
const char *options; char *options;
} XkbRMLVOSet; } XkbRMLVOSet;
typedef struct _XkbRF_VarDefs { typedef struct _XkbRF_VarDefs {

View File

@ -738,6 +738,14 @@ extern _X_EXPORT void XkbClearAllLatchesAndLocks(DeviceIntPtr /* dev */ ,
XkbEventCausePtr /* cause */ XkbEventCausePtr /* cause */
); );
extern _X_EXPORT void XkbInitRules(XkbRMLVOSet * /* rmlvo */,
const char * /* rules */,
const char * /* model */,
const char * /* layout */,
const char * /* variant */,
const char * /* options */
) ;
extern _X_EXPORT void XkbGetRulesDflts(XkbRMLVOSet * /* rmlvo */ extern _X_EXPORT void XkbGetRulesDflts(XkbRMLVOSet * /* rmlvo */
); );

View File

@ -82,15 +82,17 @@ xkb_get_rules_test(void)
static void static void
xkb_set_rules_test(void) xkb_set_rules_test(void)
{ {
XkbRMLVOSet rmlvo = { XkbRMLVOSet rmlvo;
.rules = "test-rules",
.model = "test-model",
.layout = "test-layout",
.variant = "test-variant",
.options = "test-options"
};
XkbRMLVOSet rmlvo_new = { NULL }; XkbRMLVOSet rmlvo_new = { NULL };
XkbInitRules(&rmlvo, "test-rules", "test-model", "test-layout",
"test-variant", "test-options");
assert(rmlvo.rules);
assert(rmlvo.model);
assert(rmlvo.layout);
assert(rmlvo.variant);
assert(rmlvo.options);
XkbSetRulesDflts(&rmlvo); XkbSetRulesDflts(&rmlvo);
XkbGetRulesDflts(&rmlvo_new); XkbGetRulesDflts(&rmlvo_new);
@ -106,6 +108,8 @@ xkb_set_rules_test(void)
assert(strcmp(rmlvo.layout, rmlvo_new.layout) == 0); assert(strcmp(rmlvo.layout, rmlvo_new.layout) == 0);
assert(strcmp(rmlvo.variant, rmlvo_new.variant) == 0); assert(strcmp(rmlvo.variant, rmlvo_new.variant) == 0);
assert(strcmp(rmlvo.options, rmlvo_new.options) == 0); assert(strcmp(rmlvo.options, rmlvo_new.options) == 0);
XkbFreeRMLVOSet(&rmlvo, FALSE);
} }
/** /**

View File

@ -129,11 +129,11 @@ XkbFreeRMLVOSet(XkbRMLVOSet * rmlvo, Bool freeRMLVO)
if (!rmlvo) if (!rmlvo)
return; return;
free((void *) rmlvo->rules); free(rmlvo->rules);
free((void *) rmlvo->model); free(rmlvo->model);
free((void *) rmlvo->layout); free(rmlvo->layout);
free((void *) rmlvo->variant); free(rmlvo->variant);
free((void *) rmlvo->options); free(rmlvo->options);
if (freeRMLVO) if (freeRMLVO)
free(rmlvo); free(rmlvo);
@ -206,6 +206,21 @@ XkbWriteRulesProp(ClientPtr client, void *closure)
return TRUE; return TRUE;
} }
void
XkbInitRules(XkbRMLVOSet *rmlvo,
const char *rules,
const char *model,
const char *layout,
const char *variant,
const char *options)
{
rmlvo->rules = rules ? xnfstrdup(rules) : NULL;
rmlvo->model = model ? xnfstrdup(model) : NULL;
rmlvo->layout = layout ? xnfstrdup(layout) : NULL;
rmlvo->variant = variant ? xnfstrdup(variant) : NULL;
rmlvo->options = options ? xnfstrdup(options) : NULL;
}
static void static void
XkbSetRulesUsed(XkbRMLVOSet * rmlvo) XkbSetRulesUsed(XkbRMLVOSet * rmlvo)
{ {