1106
1092
for ( ; GetInputLine(file,&line,False); line.num_line= 0) {
1107
1093
if (line.line[0]=='!') {
1108
1094
tok = strtok(&(line.line[1]), " \t");
1109
if (!_XkbStrCaseCmp(tok,"model"))
1095
if (_XkbStrCaseCmp(tolower(tok),"model") == 0)
1110
1096
headingtype = HEAD_MODEL;
1111
else if (!_XkbStrCaseCmp(tok,"layout"))
1097
else if (_XkbStrCaseCmp(tok,"layout") == 0)
1112
1098
headingtype = HEAD_LAYOUT;
1113
else if (!_XkbStrCaseCmp(tok,"variant"))
1099
else if (_XkbStrCaseCmp(tok,"variant") == 0)
1114
1100
headingtype = HEAD_VARIANT;
1115
else if (!_XkbStrCaseCmp(tok,"option"))
1101
else if (_XkbStrCaseCmp(tok,"option") == 0)
1116
1102
headingtype = HEAD_OPTION;
1344
1330
_XkbFree(rules);
1348
#ifndef XKB_IN_SERVER
1351
XkbRF_GetNamesProp(Display *dpy,char **rf_rtrn,XkbRF_VarDefsPtr vd_rtrn)
1353
Atom rules_atom,actual_type;
1355
unsigned long nitems,bytes_after;
1359
rules_atom= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,True);
1360
if (rules_atom==None) /* property cannot exist */
1362
rtrn= XGetWindowProperty(dpy,DefaultRootWindow(dpy),rules_atom,
1363
0L,_XKB_RF_NAMES_PROP_MAXLEN,False,
1364
XA_STRING,&actual_type,
1365
&fmt,&nitems,&bytes_after,
1366
(unsigned char **)&data);
1371
(void)bzero((char *)vd_rtrn,sizeof(XkbRF_VarDefsRec));
1372
if ((bytes_after>0)||(actual_type!=XA_STRING)||(fmt!=8)) {
1373
if (data) XFree(data);
1374
return (fmt==0?True:False);
1378
if (out && (*out) && rf_rtrn)
1379
*rf_rtrn= _XkbDupString(out);
1382
if ((out-data)<nitems) {
1384
vd_rtrn->model= _XkbDupString(out);
1388
if ((out-data)<nitems) {
1390
vd_rtrn->layout= _XkbDupString(out);
1394
if ((out-data)<nitems) {
1396
vd_rtrn->variant= _XkbDupString(out);
1401
if ((out-data)<nitems) {
1403
vd_rtrn->options= _XkbDupString(out);
1411
XkbRF_SetNamesProp(Display *dpy,char *rules_file,XkbRF_VarDefsPtr var_defs)
1417
len= (rules_file?strlen(rules_file):0);
1418
len+= (var_defs->model?strlen(var_defs->model):0);
1419
len+= (var_defs->layout?strlen(var_defs->layout):0);
1420
len+= (var_defs->variant?strlen(var_defs->variant):0);
1421
len+= (var_defs->options?strlen(var_defs->options):0);
1425
len+= 5; /* trailing NULs */
1427
name= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,False);
1428
if (name==None) { /* should never happen */
1429
_XkbLibError(_XkbErrXReqFailure,"XkbRF_SetNamesProp",X_InternAtom);
1432
pval= (char *)_XkbAlloc(len);
1434
_XkbLibError(_XkbErrBadAlloc,"XkbRF_SetNamesProp",len);
1439
strcpy(&pval[out],rules_file);
1440
out+= strlen(rules_file);
1443
if (var_defs->model) {
1444
strcpy(&pval[out],var_defs->model);
1445
out+= strlen(var_defs->model);
1448
if (var_defs->layout) {
1449
strcpy(&pval[out],var_defs->layout);
1450
out+= strlen(var_defs->layout);
1453
if (var_defs->variant) {
1454
strcpy(&pval[out],var_defs->variant);
1455
out+= strlen(var_defs->variant);
1458
if (var_defs->options) {
1459
strcpy(&pval[out],var_defs->options);
1460
out+= strlen(var_defs->options);
1464
_XkbLibError(_XkbErrBadLength,"XkbRF_SetNamesProp",out);
1469
XChangeProperty(dpy,DefaultRootWindow(dpy),name,XA_STRING,8,PropModeReplace,
1470
(unsigned char *)pval,len);