lev_comp int vs long

Fix lev_comp's variable argument usage by changing it to make
add_opvars() expect an int rather than a long when given the "i"
indicator, and add "l" for really passing a long.  The ints are
conveted to longs when setting up the interpreter.  I think I changed
just about all the integer opvars to int, although there is one use
of "l" in lev_main.c just to make sure it works.  There could be
arguments that really do need to be 'long'; if so, the add_opvars()
calls for them will have to have its indicator string updated and
possibly add or remove some casts.

There's a lot of reformatting included but it's not consistent about
tab replacement.  Some of the changes are due to renaming long-named
'variable_definitions' to 'vardefs' to shorten a bunch of lines.

Updated sys/share/*_yacc.c will be checked in separately.  The ones
currently in the repository won't work with patched lev_main.c due to
that renamed variable.
This commit is contained in:
PatR
2018-11-27 18:21:58 -08:00
parent 554ec17c8b
commit 5d2686e7c1
6 changed files with 242 additions and 171 deletions

View File

@@ -1,5 +1,5 @@
%{
/* NetHack 3.6 lev_comp.l $NHDT-Date: 1455415007 2016/02/14 01:56:47 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.24 $ */
/* NetHack 3.6 lev_comp.l $NHDT-Date: 1543371690 2018/11/28 02:21:30 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.25 $ */
/* Copyright (c) 1989 by Jean-Christophe Collet */
/* NetHack may be freely redistributed. See license for details. */
@@ -77,7 +77,7 @@ long FDECL(corefunc_str_check, (char *, long));
extern void VDECL(lc_error, (const char *, ...));
extern struct lc_vardefs *FDECL(vardef_defined,(struct lc_vardefs *,char *, int));
extern struct lc_vardefs *variable_definitions;
extern struct lc_vardefs *vardefs;
extern long FDECL(method_defined, (char *, long, long *));
@@ -384,7 +384,7 @@ handle_varstring_check()
struct lc_vardefs *vd;
yylval.map = dupstr(yytext);
if ((vd = vardef_defined(variable_definitions, yytext, 1)) != 0) {
if ((vd = vardef_defined(vardefs, yytext, 1)) != 0) {
long l = vd->var_type;
int a = ((l & SPOVAR_ARRAY) == SPOVAR_ARRAY);