diff options
author | marha <marha@users.sourceforge.net> | 2012-11-05 07:36:16 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-11-05 07:36:16 +0100 |
commit | 1cc98f5a48924d750fbef7ea6b05a1ba49c28589 (patch) | |
tree | 24c2eebc8ef3536e89b355b099d844083646d190 /xkbcomp | |
parent | 67c290de36ddc1caae94c0892157ac16b90e4f99 (diff) | |
download | vcxsrv-1cc98f5a48924d750fbef7ea6b05a1ba49c28589.tar.gz vcxsrv-1cc98f5a48924d750fbef7ea6b05a1ba49c28589.tar.bz2 vcxsrv-1cc98f5a48924d750fbef7ea6b05a1ba49c28589.zip |
xserver mesa xkbcomp git update 5 nov 2012
xserver: a194630f7f7b287cb4ea4a459df0745f4c0d4c1a
mesa: ccbfe3dde94cd50a4e6468cfeabf95c79c9d8072
xkbcomp: a68c5b7b29eb1433b1be73b50c4248e10eab8e64
Diffstat (limited to 'xkbcomp')
-rw-r--r-- | xkbcomp/parseutils.c | 2 | ||||
-rw-r--r-- | xkbcomp/parseutils.h | 3 | ||||
-rw-r--r-- | xkbcomp/xkbcomp.c | 2 | ||||
-rw-r--r-- | xkbcomp/xkbparse.y | 10 | ||||
-rw-r--r-- | xkbcomp/xkbscan.c | 10 |
5 files changed, 21 insertions, 6 deletions
diff --git a/xkbcomp/parseutils.c b/xkbcomp/parseutils.c index 253cd9dae..a1b6e9e2f 100644 --- a/xkbcomp/parseutils.c +++ b/xkbcomp/parseutils.c @@ -797,7 +797,7 @@ XKBParseFile(FILE * file, XkbFile ** pRtrn) { if (file) { - yyin = file; + scan_set_file(file); rtrnValue = NULL; if (yyparse() == 0) { diff --git a/xkbcomp/parseutils.h b/xkbcomp/parseutils.h index 8b8a6c11d..8c381d408 100644 --- a/xkbcomp/parseutils.h +++ b/xkbcomp/parseutils.h @@ -198,11 +198,10 @@ extern int yywrap(void); extern int yylex(void); extern int yyparse(void); +extern void scan_set_file(FILE *file); extern int setScanState(char * /* file */ , int /* line */ ); -extern FILE *yyin; - #endif /* XKBPARSE_H */ diff --git a/xkbcomp/xkbcomp.c b/xkbcomp/xkbcomp.c index 063ae8741..116bcfa4b 100644 --- a/xkbcomp/xkbcomp.c +++ b/xkbcomp/xkbcomp.c @@ -883,7 +883,7 @@ main(int argc, char *argv[]) XkbFileInfo result; Status status; - yyin = stdin; + scan_set_file(stdin); uSetEntryFile(NullString); uSetDebugFile(NullString); uSetErrorFile(NullString); diff --git a/xkbcomp/xkbparse.y b/xkbcomp/xkbparse.y index 51b3bf7e9..d816bee6e 100644 --- a/xkbcomp/xkbparse.y +++ b/xkbcomp/xkbparse.y @@ -141,7 +141,7 @@ unsigned int parseDebug; %type <str> KeyName MapName OptMapName KeySym %type <sval> FieldSpec Ident Element String %type <any> DeclList Decl -%type <expr> OptExprList ExprList Expr Term Lhs Terminal ArrayInit +%type <expr> OptExprList ExprList Expr Term Lhs Terminal ArrayInit KeySyms %type <expr> OptKeySymList KeySymList Action ActionList Coord CoordList %type <var> VarDecl VarDeclList SymbolsBody SymbolsVarDecl %type <vmod> VModDecl VModDefList VModDef @@ -717,8 +717,12 @@ OptKeySymList : KeySymList { $$= $1; } KeySymList : KeySymList COMMA KeySym { $$= AppendKeysymList($1,$3); } + | KeySymList COMMA KeySyms + { $$= AppendKeysymList($1,strdup("NoSymbol")); } | KeySym { $$= CreateKeysymList($1); } + | KeySyms + { $$= CreateKeysymList(strdup("NoSymbol")); } ; KeySym : IDENT { $$= strdup(scanBuf); } @@ -730,6 +734,10 @@ KeySym : IDENT { $$= strdup(scanBuf); } } ; +KeySyms : OBRACE KeySymList CBRACE + { $$= $2; } + ; + SignedNumber : MINUS Number { $$= -$2; } | Number { $$= $1; } ; diff --git a/xkbcomp/xkbscan.c b/xkbcomp/xkbscan.c index 22a034fd9..a05d56988 100644 --- a/xkbcomp/xkbscan.c +++ b/xkbcomp/xkbscan.c @@ -37,7 +37,7 @@ unsigned int scanDebug; -FILE *yyin = NULL; +static FILE *yyin; static char scanFileBuf[1024] = {0}; char *scanFile = scanFileBuf; @@ -269,6 +269,14 @@ tokText(int tok) } #endif +void +scan_set_file(FILE *file) +{ + readBufLen = 0; + readBufPos = 0; + yyin = file; +} + static int scanchar(void) { |