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

View File

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

View File

@ -738,6 +738,14 @@ extern _X_EXPORT void XkbClearAllLatchesAndLocks(DeviceIntPtr /* dev */ ,
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 */
);

View File

@ -82,15 +82,17 @@ xkb_get_rules_test(void)
static void
xkb_set_rules_test(void)
{
XkbRMLVOSet rmlvo = {
.rules = "test-rules",
.model = "test-model",
.layout = "test-layout",
.variant = "test-variant",
.options = "test-options"
};
XkbRMLVOSet rmlvo;
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);
XkbGetRulesDflts(&rmlvo_new);
@ -106,6 +108,8 @@ xkb_set_rules_test(void)
assert(strcmp(rmlvo.layout, rmlvo_new.layout) == 0);
assert(strcmp(rmlvo.variant, rmlvo_new.variant) == 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)
return;
free((void *) rmlvo->rules);
free((void *) rmlvo->model);
free((void *) rmlvo->layout);
free((void *) rmlvo->variant);
free((void *) rmlvo->options);
free(rmlvo->rules);
free(rmlvo->model);
free(rmlvo->layout);
free(rmlvo->variant);
free(rmlvo->options);
if (freeRMLVO)
free(rmlvo);
@ -206,6 +206,21 @@ XkbWriteRulesProp(ClientPtr client, void *closure)
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
XkbSetRulesUsed(XkbRMLVOSet * rmlvo)
{