$NetBSD: patch-ad,v 1.3 2013/01/11 23:36:16 joerg Exp $ --- gram.y.orig 1988-09-22 13:14:31.000000000 +0000 +++ gram.y @@ -60,7 +60,10 @@ static char *hcolors[4]; /* Color value static char *mcolors[2]; /* Color values used in menus. */ MenuLink *menu_link; /* Temporary menu link pointer. */ +#ifdef X_NOT_STDC_ENV char *calloc(); +char *malloc(); +#endif %} @@ -117,18 +120,18 @@ expr: keyword '=' compexpr case IsString: if ($3 == C_STRING) { strcpy(KeywordTable[$1].sptr, - yylval.sval); + $2); } else { yyerror("illegal construct"); } - free(yylval.sval); + free($2); break; case IsNumeric: if ($3 == C_STRING) { *(KeywordTable[$1].nptr) = - y_atoi(yylval.sval); + y_atoi($2); } else yyerror("illegal construct"); - free(yylval.sval); + free($2); break; case IsBoolTrue: case IsBoolFalse: @@ -197,12 +200,12 @@ compexpr: keyexpr ':' contexpr ':' butte ml_ptr = $3; } | STRING - { $$ = C_STRING; } + { $$ = C_STRING; $0 = $1; } ; boolvar: STRING { - ki = keywordlookup(yylval.sval); + ki = keywordlookup($1); switch (KeywordTable[ki].type) { case IsBoolTrue: *(KeywordTable[ki].bptr) = TRUE; @@ -220,7 +223,7 @@ boolvar: STRING ; keyword: STRING { - $$ = keywordlookup(yylval.sval); + $$ = keywordlookup($1); } ; @@ -246,9 +249,9 @@ buttexpr: buttmodexpr { $$ = CheckButtonState($1); } ; -kmask: STRING { $$ = keyexprlookup(yylval.sval); } +kmask: STRING { $$ = keyexprlookup($1); } -contmask: STRING { $$ = contexprlookup(yylval.sval); } +contmask: STRING { $$ = contexprlookup($1); } buttmodexpr: buttmodifier { $$ = $1; } @@ -257,7 +260,7 @@ buttmodexpr: buttmodifier ; buttmodifier: STRING - { $$ = buttexprlookup(yylval.sval); } + { $$ = buttexprlookup($1); } ; menuname: STRING @@ -304,7 +307,7 @@ menuline: strings ':' color2 menuaction menuaction: STRING { - ki = keywordlookup(yylval.sval); + ki = keywordlookup($1); if ((ki != -1) && (KeywordTable[ki].type != IsFunction) && (KeywordTable[ki].type != IsQuitFunction) && @@ -350,7 +353,7 @@ menuaction: STRING } ; -strings: STRING { $$ = yylval.sval; } +strings: STRING { $$ = $1; } | strings STRING { $$ = strconcat($1, $2); } ; @@ -387,7 +390,7 @@ color2: '(' color ':' color ')' ':' } ; -color: STRING { $$ = yylval.sval; } +color: STRING { $$ = $1; } | /* empty */ { $$ = NULL; } ; %% @@ -503,7 +506,6 @@ char * strconcat(s1, s2) char *s1, *s2; { - char *malloc(); char *p; p = malloc(strlen(s1) + strlen(s2) + 2); @@ -572,6 +574,8 @@ char *name; /* Menu, if needed. */ setbinding(ICON, index, mask, name); if (context & WINDOW) setbinding(WINDOW, index, mask, name); + if (name) + free(name); } /* @@ -599,12 +603,13 @@ int m; /* Key/button/modifier mask. */ char *mname; /* Pointer to menu name, if needed. */ { Binding *ptr; + extern char *stash(); ptr = AllocBinding(); ptr->context = cont; ptr->mask = m; ptr->func = KeywordTable[i].fptr; - ptr->menuname = mname; + ptr->menuname = mname ? stash(mname) : NULL; switch (m & (LeftMask | MiddleMask | RightMask)) { case LeftMask: @@ -771,9 +776,8 @@ MenuLink *link; else { for(ptr = list; ptr->next; ptr = ptr->next) /* NULL */; ptr->next = link; - ptr = ptr->next; - ptr->next = NULL; } + link->next = NULL; return(list); } @@ -814,6 +818,8 @@ Bool ResetMenus() Menus = NULL; } +void LoadXDefaults (void); + /* * Set all numeric variables to zero and all boolean variables to FALSE. */