~ubuntu-branches/ubuntu/edgy/xorg-server/edgy-updates

« back to all changes in this revision

Viewing changes to xkb/maprules.c

  • Committer: Bazaar Package Importer
  • Author(s): Rodrigo Parra Novo
  • Date: 2006-07-25 20:06:28 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20060725200628-gjmmd9gxfxdc4ejs
Tags: 1:1.1.1-0ubuntu1
* New Upstream version
* Changed Build-Depends from mesa-swrast-source to mesa-swx11-source,
  following Debian package nomenclature
* Re-did 12_security_policy_in_etc.diff for 1.1.1
* Dropped 15_security_allocate_local.diff (applied upstream)
* Dropped 16_SECURITY_setuid.diff (applied upstream)
* Dropped 000_ubuntu_fix_read_kernel_mapping.patch (applied upstream)
* Dropped 002_ubuntu_fix_for_certain_intel_chipsets.patch (applied upstream)
* Updated versioned Build-Depends on mesa-swx11-source to version
  6.5.0.cvs.20060725-0ubuntu1
* Added arrayobj.c, arrayobj.h, bitset.h & rbadaptors.h to
  GL/symlink-mesa.sh (linked from mesa-swx11-source)
* Added arrayobj.c to default build target on GL/mesa/main

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
#ifdef HAVE_DIX_CONFIG_H
30
30
#include <dix-config.h>
31
 
#elif defined(HAVE_CONFIG_H)
32
 
#include <config.h>
33
31
#endif
34
32
 
35
33
#include <stdio.h>
40
38
#define XOS_USE_NO_LOCKING
41
39
#include <X11/Xos_r.h>
42
40
 
43
 
#ifndef XKB_IN_SERVER
44
 
 
45
 
#include <X11/Xproto.h>
46
 
#include <X11/Xlib.h>
47
 
#include <X11/Xos.h>
48
 
#include <X11/Xfuncs.h>
49
 
#include <X11/Xatom.h>
50
 
#include <X11/keysym.h>
51
 
#include <X11/XKBlib.h>
52
 
#include <X11/extensions/XKBgeom.h>
53
 
#include "XKMformat.h"
54
 
#include "XKBfileInt.h"
55
 
#include "XKBrules.h"
56
 
 
57
 
#else
58
 
 
59
41
#define NEED_EVENTS
60
42
#include <X11/Xproto.h>
61
43
#include <X11/X.h>
70
52
#define XKBSRV_NEED_FILE_FUNCS
71
53
#include <X11/extensions/XKBsrv.h>
72
54
 
73
 
#endif
74
 
 
75
55
#ifdef DEBUG
76
56
#define PR_DEBUG(s)             fprintf(stderr,s)
77
57
#define PR_DEBUG1(s,a)          fprintf(stderr,s,a)
82
62
#define PR_DEBUG2(s,a,b)
83
63
#endif
84
64
 
 
65
#ifdef NEED_STRCASECMP
 
66
extern int _XkbStrCaseCmp(char *s1, char *s2);
 
67
#else
 
68
#define _XkbStrCaseCmp strcasecmp
 
69
#endif
 
70
 
85
71
/***====================================================================***/
86
72
 
87
73
#define DFLT_LINE_SIZE  128
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;
1117
1103
            else {
1118
1104
                int i;
1344
1330
        _XkbFree(rules);
1345
1331
    return;
1346
1332
}
1347
 
 
1348
 
#ifndef XKB_IN_SERVER
1349
 
 
1350
 
Bool 
1351
 
XkbRF_GetNamesProp(Display *dpy,char **rf_rtrn,XkbRF_VarDefsPtr vd_rtrn)
1352
 
{
1353
 
Atom            rules_atom,actual_type;
1354
 
int             fmt;
1355
 
unsigned long   nitems,bytes_after;
1356
 
char            *data,*out;
1357
 
Status          rtrn;
1358
 
 
1359
 
    rules_atom= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,True);
1360
 
    if (rules_atom==None)       /* property cannot exist */
1361
 
        return False; 
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);
1367
 
    if (rtrn!=Success)
1368
 
        return False;
1369
 
    if (rf_rtrn)
1370
 
        *rf_rtrn= NULL;
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);
1375
 
    }
1376
 
 
1377
 
    out= data;
1378
 
    if (out && (*out) && rf_rtrn)
1379
 
         *rf_rtrn= _XkbDupString(out);
1380
 
    out+=strlen(out)+1;
1381
 
 
1382
 
    if ((out-data)<nitems) {
1383
 
        if (*out)
1384
 
            vd_rtrn->model= _XkbDupString(out);
1385
 
        out+=strlen(out)+1;
1386
 
    }
1387
 
 
1388
 
    if ((out-data)<nitems) {
1389
 
        if (*out)
1390
 
            vd_rtrn->layout= _XkbDupString(out);
1391
 
        out+=strlen(out)+1;
1392
 
    }
1393
 
 
1394
 
    if ((out-data)<nitems) {
1395
 
        if (*out)
1396
 
            vd_rtrn->variant= _XkbDupString(out);
1397
 
        out+=strlen(out)+1;
1398
 
    }
1399
 
 
1400
 
 
1401
 
    if ((out-data)<nitems) {
1402
 
        if (*out)
1403
 
            vd_rtrn->options= _XkbDupString(out);
1404
 
        out+=strlen(out)+1;
1405
 
    }
1406
 
    XFree(data);
1407
 
    return True;
1408
 
}
1409
 
 
1410
 
Bool 
1411
 
XkbRF_SetNamesProp(Display *dpy,char *rules_file,XkbRF_VarDefsPtr var_defs)
1412
 
{
1413
 
int     len,out;
1414
 
Atom    name;
1415
 
char *  pval;
1416
 
 
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);
1422
 
    if (len<1)
1423
 
        return True;
1424
 
 
1425
 
    len+= 5; /* trailing NULs */
1426
 
 
1427
 
    name= XInternAtom(dpy,_XKB_RF_NAMES_PROP_ATOM,False);
1428
 
    if (name==None)  { /* should never happen */
1429
 
        _XkbLibError(_XkbErrXReqFailure,"XkbRF_SetNamesProp",X_InternAtom);
1430
 
        return False;
1431
 
    }
1432
 
    pval= (char *)_XkbAlloc(len);
1433
 
    if (!pval) {
1434
 
        _XkbLibError(_XkbErrBadAlloc,"XkbRF_SetNamesProp",len);
1435
 
        return False;
1436
 
    }
1437
 
    out= 0;
1438
 
    if (rules_file) {
1439
 
        strcpy(&pval[out],rules_file);
1440
 
        out+= strlen(rules_file);
1441
 
    }
1442
 
    pval[out++]= '\0';
1443
 
    if (var_defs->model) {
1444
 
        strcpy(&pval[out],var_defs->model);
1445
 
        out+= strlen(var_defs->model);
1446
 
    }
1447
 
    pval[out++]= '\0';
1448
 
    if (var_defs->layout) {
1449
 
        strcpy(&pval[out],var_defs->layout);
1450
 
        out+= strlen(var_defs->layout);
1451
 
    }
1452
 
    pval[out++]= '\0';
1453
 
    if (var_defs->variant) {
1454
 
        strcpy(&pval[out],var_defs->variant);
1455
 
        out+= strlen(var_defs->variant);
1456
 
    }
1457
 
    pval[out++]= '\0';
1458
 
    if (var_defs->options) {
1459
 
        strcpy(&pval[out],var_defs->options);
1460
 
        out+= strlen(var_defs->options);
1461
 
    }
1462
 
    pval[out++]= '\0';
1463
 
    if (out!=len) {
1464
 
        _XkbLibError(_XkbErrBadLength,"XkbRF_SetNamesProp",out);
1465
 
        _XkbFree(pval);
1466
 
        return False;
1467
 
    }
1468
 
 
1469
 
    XChangeProperty(dpy,DefaultRootWindow(dpy),name,XA_STRING,8,PropModeReplace,
1470
 
                                                (unsigned char *)pval,len);
1471
 
    _XkbFree(pval);
1472
 
    return True;
1473
 
}
1474
 
 
1475
 
#endif