int64_t num;
enum xkb_file_type file_type;
char *str;
+ char keyName[XkbKeyNameLength];
xkb_atom_t sval;
enum merge_mode merge;
ParseCommon *any;
GroupCompatDef *groupCompat;
IndicatorMapDef *ledMap;
IndicatorNameDef *ledName;
- KeycodeDef *keyName;
+ KeycodeDef *keyCode;
KeyAliasDef *keyAlias;
void *geom;
XkbFile *file;
}
%type <num> INTEGER FLOAT
-%type <str> IDENT KEYNAME STRING
+%type <str> IDENT STRING
+%type <keyName> KEYNAME KeyName
%type <ival> Number Integer Float SignedNumber
%type <merge> MergeMode OptMergeMode
%type <file_type> XkbCompositeType FileType
%type <uval> DoodadType Flag Flags OptFlags KeyCode
-%type <str> KeyName MapName OptMapName KeySym
+%type <str> MapName OptMapName KeySym
%type <sval> FieldSpec Ident Element String
%type <any> DeclList Decl
%type <expr> OptExprList ExprList Expr Term Lhs Terminal ArrayInit KeySyms
%type <groupCompat> GroupCompatDecl
%type <ledMap> IndicatorMapDecl
%type <ledName> IndicatorNameDecl
-%type <keyName> KeyNameDecl
+%type <keyCode> KeyNameDecl
%type <keyAlias> KeyAliasDecl
%type <geom> ShapeDecl SectionDecl SectionBody SectionBodyItem RowBody RowBodyItem
%type <geom> Keys Key OverlayDecl OverlayKeyList OverlayKey OutlineList OutlineInList
KeyNameDecl : KeyName EQUALS KeyCode SEMI
{
- KeycodeDef *def;
-
- def= KeycodeCreate($1,$3);
- free($1);
- $$= def;
- }
+ $$ = KeycodeCreate($1, $3);
+ }
;
KeyAliasDecl : ALIAS KeyName EQUALS KeyName SEMI
{
- KeyAliasDef *def;
- def= KeyAliasCreate($2,$4);
- free($2);
- free($4);
- $$= def;
+ $$= KeyAliasCreate($2,$4);
}
;
SymbolsDecl : KEY KeyName OBRACE
SymbolsBody
CBRACE SEMI
- { $$= SymbolsCreate($2,(ExprDef *)$4); free($2); }
+ { $$= SymbolsCreate($2,(ExprDef *)$4); }
;
SymbolsBody : SymbolsBody COMMA SymbolsVarDecl
;
Key : KeyName
- { free($1); $$= NULL; }
+ { $$= NULL; }
| OBRACE ExprList CBRACE
{ FreeStmt(&$2->common); $$= NULL; }
;
;
OverlayKey : KeyName EQUALS KeyName
- { free($1); free($3); $$= NULL; }
+ { $$= NULL; }
;
OutlineList : OutlineList COMMA OutlineInList
{
ExprDef *expr;
expr= ExprCreate(ExprValue,TypeKeyName);
- memset(expr->value.keyName,0,5);
strncpy(expr->value.keyName,$1,4);
- free($1);
$$= expr;
}
;
KeyCode : INTEGER { $$= $1; }
;
-KeyName : KEYNAME { $$= $1; }
+KeyName : KEYNAME { strncpy($$, $1, XkbKeyNameLength); }
;
Ident : IDENT
}
KeycodeDef *
-KeycodeCreate(const char *name, unsigned long value)
+KeycodeCreate(char keyName[XkbKeyNameLength], unsigned long value)
{
KeycodeDef *def;
def->common.stmtType = StmtKeycodeDef;
def->common.next = NULL;
- strncpy(def->name, name, XkbKeyNameLength);
+ strncpy(def->name, keyName, XkbKeyNameLength);
def->name[XkbKeyNameLength] = '\0';
def->value = value;
return def;
}
KeyAliasDef *
-KeyAliasCreate(const char *alias, const char *real)
+KeyAliasCreate(char alias[XkbKeyNameLength], char real[XkbKeyNameLength])
{
KeyAliasDef *def;
}
SymbolsDef *
-SymbolsCreate(const char *keyName, ExprDef *symbols)
+SymbolsCreate(char keyName[XkbKeyNameLength], ExprDef *symbols)
{
SymbolsDef *def;
def->common.stmtType = StmtSymbolsDef;
def->common.next = NULL;
def->merge = MERGE_DEFAULT;
- memset(def->keyName, 0, 5);
- strncpy(def->keyName, keyName, 4);
+ strncpy(def->keyName, keyName, XkbKeyNameLength);
def->symbols = symbols;
return def;
}
extern ExprDef *
ExprCreateBinary(unsigned op, ExprDef *left, ExprDef *right);
-extern KeycodeDef *
-KeycodeCreate(const char *name, unsigned long value);
+KeycodeDef *
+KeycodeCreate(char keyName[XkbKeyNameLength], unsigned long value);
extern KeyAliasDef *
-KeyAliasCreate(const char *alias, const char *real);
+KeyAliasCreate(char keyName[XkbKeyNameLength], char real[XkbKeyNameLength]);
extern VModDef *
VModCreate(xkb_atom_t name, ExprDef *value);
KeyTypeCreate(xkb_atom_t name, VarDef *body);
extern SymbolsDef *
-SymbolsCreate(const char *keyName, ExprDef *symbols);
+SymbolsCreate(char keyName[XkbKeyNameLength], ExprDef *symbols);
extern GroupCompatDef *
GroupCompatCreate(int group, ExprDef *def);