build fix for NODUMPENUMS and more issue #916

I made more things in dump_enums() static and/or const.  In the
process I discovered both compile problems for NODUMPENUMS and when
fixed, link problems for NODUMPENUMS+ENHANCED_SYMBOLS.

The uft8map.c portion has no changes, just reformatting.
This commit is contained in:
PatR
2022-10-31 15:43:14 -07:00
parent 068b8fde71
commit 1572877429
5 changed files with 64 additions and 50 deletions

View File

@@ -21,6 +21,9 @@ static void regen_pw(int);
static void regen_hp(int);
static void interrupt_multi(const char *);
static void debug_fields(const char *);
#ifndef NODUMPENUMS
static void dump_enums(void);
#endif
void
early_init(void)
@@ -838,17 +841,17 @@ interrupt_multi(const char *msg)
*/
static const struct early_opt earlyopts[] = {
{ARG_DEBUG, "debug", 5, TRUE},
{ARG_VERSION, "version", 4, TRUE},
{ARG_SHOWPATHS, "showpaths", 9, FALSE},
{ ARG_DEBUG, "debug", 5, TRUE },
{ ARG_VERSION, "version", 4, TRUE },
{ ARG_SHOWPATHS, "showpaths", 9, FALSE },
#ifndef NODUMPENUMS
{ARG_DUMPENUMS, "dumpenums", 9, FALSE},
#ifdef ENHANCED_SYMBOLS
{ARG_DUMPGLYPHIDS, "dumpglyphids", 12, FALSE},
{ ARG_DUMPENUMS, "dumpenums", 9, FALSE },
#endif
#ifdef ENHANCED_SYMBOLS
{ ARG_DUMPGLYPHIDS, "dumpglyphids", 12, FALSE },
#endif
#endif /* NODUMPENUMS */
#ifdef WIN32
{ARG_WINDOWS, "windows", 4, TRUE},
{ ARG_WINDOWS, "windows", 4, TRUE },
#endif
};
@@ -922,28 +925,25 @@ argcheck(int argc, char *argv[], enum earlyarg e_arg)
early_version_info(insert_into_pastebuf);
return 2;
}
case ARG_SHOWPATHS: {
case ARG_SHOWPATHS:
return 2;
}
#ifndef NODUMPENUMS
case ARG_DUMPENUMS: {
case ARG_DUMPENUMS:
dump_enums();
return 2;
}
#endif
#ifdef ENHANCED_SYMBOLS
case ARG_DUMPGLYPHIDS: {
case ARG_DUMPGLYPHIDS:
dump_glyphids();
return 2;
}
#endif
#endif /* NODUMPENUMS */
#ifdef WIN32
case ARG_WINDOWS: {
case ARG_WINDOWS:
if (extended_opt) {
extended_opt++;
return windows_early_options(extended_opt);
}
}
/*FALLTHRU*/
#endif
default:
break;
@@ -1028,55 +1028,61 @@ timet_delta(time_t etim, time_t stim) /* end and start times */
return (long) difftime(etim, stim);
}
#ifndef NODUMPENUMS
#if !defined(NODUMPENUMS) || defined(ENHANCED_SYMBOLS)
/* monsdump[] and objdump[] are also used in utf8map.c */
#define DUMP_ENUMS
struct enum_dump monsdump[] = {
#include "monsters.h"
{ NUMMONS, "NUMMONS" },
{ NUMMONS, "NUMMONS" },
};
struct enum_dump objdump[] = {
#include "objects.h"
{ NUM_OBJECTS, "NUM_OBJECTS" },
{ NUM_OBJECTS, "NUM_OBJECTS" },
};
#undef DUMP_ENUMS
void
#ifndef NODUMPENUMS
static void
dump_enums(void)
{
int i, j;
enum enum_dumps {
monsters_enum,
objects_enum,
objects_misc_enum,
NUM_ENUM_DUMPS
};
static const char *const titles[NUM_ENUM_DUMPS] =
{ "monnums", "objects_nums" , "misc_object_nums" };
static struct enum_dump omdump[] = {
{ LAST_GEM, "LAST_GEM" },
{ NUM_GLASS_GEMS, "NUM_GLASS_GEMS" },
{ MAXSPELL, "MAXSPELL" },
static const char *const titles[NUM_ENUM_DUMPS] = {
"monnums", "objects_nums" , "misc_object_nums"
};
static const struct enum_dump omdump[] = {
{ LAST_GEM, "LAST_GEM" },
{ NUM_GLASS_GEMS, "NUM_GLASS_GEMS" },
{ MAXSPELL, "MAXSPELL" },
};
static const struct enum_dump *const ed[NUM_ENUM_DUMPS] = {
monsdump, objdump, omdump
};
struct enum_dump *ed[NUM_ENUM_DUMPS] = { monsdump, objdump, omdump };
static const char *const pfx[NUM_ENUM_DUMPS] = { "PM_", "", "" };
int szd[NUM_ENUM_DUMPS] = { SIZE(monsdump), SIZE(objdump), SIZE(omdump) };
static int szd[NUM_ENUM_DUMPS] = {
SIZE(monsdump), SIZE(objdump), SIZE(omdump)
};
int i, j;
for (i = 0; i < NUM_ENUM_DUMPS; ++ i) {
raw_printf("enum %s = {", titles[i]);
for (j = 0; j < szd[i]; ++j) {
raw_printf(" %s%s = %i%s",
(j == szd[i] - 1) ? "" : pfx[i],
ed[i]->nm,
ed[i]->val,
ed[i][j].nm,
ed[i][j].val,
(j == szd[i] - 1) ? "" : ",");
ed[i]++;
}
raw_print("};");
raw_print("");
}
raw_print("");
}
#endif /* NODUMPENUMS */
#ifdef ENHANCED_SYMBOLS
void
@@ -1085,6 +1091,6 @@ dump_glyphids(void)
dump_all_glyphids(stdout);
}
#endif /* ENHANCED_SYMBOLS */
#endif /* NODUMPENUMS */
#endif /* !NODUMPENUMS || ENHANCED_SYMBOLS */
/*allmain.c*/