From: Bart House Date: Fri, 23 Nov 2018 21:13:28 +0000 (-0800) Subject: topl.c globals moved to instance_globals. X-Git-Tag: NetHack-3.6.2_Released~161^2~34^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3394362f822e0fde954477528290e01834812ced;p=nethack topl.c globals moved to instance_globals. --- diff --git a/include/decl.h b/include/decl.h index b41eab5df..ce9fe2d81 100644 --- a/include/decl.h +++ b/include/decl.h @@ -464,6 +464,14 @@ struct instance_globals { /* pickup.c */ int oldcap; /* last encumberance */ + /* pline.c */ + unsigned pline_flags; + char prevmsg[BUFSZ]; +#ifdef DUMPLOG + unsigned saved_pline_index; /* slot in saved_plines[] to use next */ + char *saved_plines[DUMPLOG_MSG_COUNT]; +#endif + /* polyself.c */ int sex_change_ok; /* controls whether taking on new form or becoming new man can also change sex (ought to be an arg to diff --git a/src/cmd.c b/src/cmd.c index eba20ccd3..dfe217335 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -5771,8 +5771,7 @@ char def; { char res, qbuf[QBUFSZ]; #ifdef DUMPLOG - extern unsigned saved_pline_index; /* pline.c */ - unsigned idx = saved_pline_index; + unsigned idx = g.saved_pline_index; /* buffer to hold query+space+formatted_single_char_response */ char dumplog_buf[QBUFSZ + 1 + 15]; /* [QBUFSZ+1+7] should suffice */ #endif @@ -5789,7 +5788,7 @@ char def; } res = (*windowprocs.win_yn_function)(query, resp, def); #ifdef DUMPLOG - if (idx == saved_pline_index) { + if (idx == g.saved_pline_index) { /* when idx is still the same as saved_pline_index, the interface didn't put the prompt into saved_plines[]; we put a simplified version in there now (without response choices or default) */ diff --git a/src/decl.c b/src/decl.c index d9db42982..7a407a9e2 100644 --- a/src/decl.c +++ b/src/decl.c @@ -348,6 +348,14 @@ const struct instance_globals g_init = { /* pickup.c */ 0, /* oldcap */ + /* pline.c */ + 0, /* pline_flags */ + UNDEFINED_VALUES, /* prevmsg */ +#ifdef DUMPLOG + 0, /* saved_pline_index */ + UNDEFINED_VALUES, +#endif + /* polyself.c */ 0, /* sex_change_ok */ diff --git a/src/end.c b/src/end.c index a433acc07..c24835001 100644 --- a/src/end.c +++ b/src/end.c @@ -679,14 +679,12 @@ dump_plines() { int i, j; char buf[BUFSZ], **strp; - extern char *saved_plines[]; - extern unsigned saved_pline_index; Strcpy(buf, " "); /* one space for indentation */ putstr(0, 0, "Latest messages:"); - for (i = 0, j = (int) saved_pline_index; i < DUMPLOG_MSG_COUNT; + for (i = 0, j = (int) g.saved_pline_index; i < DUMPLOG_MSG_COUNT; ++i, j = (j + 1) % DUMPLOG_MSG_COUNT) { - strp = &saved_plines[j]; + strp = &g.saved_plines[j]; if (*strp) { copynchars(&buf[1], *strp, BUFSZ - 1 - 1); putstr(0, 0, buf); diff --git a/src/pline.c b/src/pline.c index ebde8b145..d7acef096 100644 --- a/src/pline.c +++ b/src/pline.c @@ -6,18 +6,12 @@ #define NEED_VARARGS /* Uses ... */ /* comment line for pre-compiled headers */ #include "hack.h" -static unsigned pline_flags = 0; -static char prevmsg[BUFSZ]; - static char *FDECL(You_buf, (int)); #if defined(MSGHANDLER) && (defined(POSIX_TYPES) || defined(__GNUC__)) static void FDECL(execplinehandler, (const char *)); #endif #ifdef DUMPLOG -/* also used in end.c */ -unsigned saved_pline_index = 0; /* slot in saved_plines[] to use next */ -char *saved_plines[DUMPLOG_MSG_COUNT] = { (char *) 0 }; /* keep the most recent DUMPLOG_MSG_COUNT messages */ void @@ -31,8 +25,8 @@ const char *line; * The core should take responsibility for that and have * this share it. */ - unsigned indx = saved_pline_index; /* next slot to use */ - char *oldest = saved_plines[indx]; /* current content of that slot */ + unsigned indx = g.saved_pline_index; /* next slot to use */ + char *oldest = g.saved_plines[indx]; /* current content of that slot */ if (oldest && strlen(oldest) >= strlen(line)) { /* this buffer will gradually shrink until the 'else' is needed; @@ -41,9 +35,9 @@ const char *line; } else { if (oldest) free((genericptr_t) oldest); - saved_plines[indx] = dupstr(line); + g.saved_plines[indx] = dupstr(line); } - saved_pline_index = (indx + 1) % DUMPLOG_MSG_COUNT; + g.saved_pline_index = (indx + 1) % DUMPLOG_MSG_COUNT; } /* called during save (unlike the interface-specific message history, @@ -55,9 +49,9 @@ dumplogfreemessages() unsigned indx; for (indx = 0; indx < DUMPLOG_MSG_COUNT; ++indx) - if (saved_plines[indx]) - free((genericptr_t) saved_plines[indx]), saved_plines[indx] = 0; - saved_pline_index = 0; + if (g.saved_plines[indx]) + free((genericptr_t) g.saved_plines[indx]), g.saved_plines[indx] = 0; + g.saved_pline_index = 0; } #endif @@ -139,7 +133,7 @@ VA_DECL(const char *, line) * Unfortunately, that means Norep() isn't honored (general issue) and * that short lines aren't combined into one longer one (tty behavior). */ - if ((pline_flags & SUPPRESS_HISTORY) == 0) + if ((g.pline_flags & SUPPRESS_HISTORY) == 0) dumplogmsg(line); #endif /* use raw_print() if we're called too early (or perhaps too late @@ -153,11 +147,11 @@ VA_DECL(const char *, line) } msgtyp = MSGTYP_NORMAL; - no_repeat = (pline_flags & PLINE_NOREPEAT) ? TRUE : FALSE; - if ((pline_flags & OVERRIDE_MSGTYPE) == 0) { + no_repeat = (g.pline_flags & PLINE_NOREPEAT) ? TRUE : FALSE; + if ((g.pline_flags & OVERRIDE_MSGTYPE) == 0) { msgtyp = msgtype_type(line, no_repeat); if (msgtyp == MSGTYP_NOSHOW - || (msgtyp == MSGTYP_NOREP && !strcmp(line, prevmsg))) + || (msgtyp == MSGTYP_NOREP && !strcmp(line, g.prevmsg))) /* FIXME: we need a way to tell our caller that this message * was suppressed so that caller doesn't set iflags.last_msg * for something that hasn't been shown, otherwise a subsequent @@ -181,7 +175,7 @@ VA_DECL(const char *, line) /* this gets cleared after every pline message */ iflags.last_msg = PLNMSG_UNKNOWN; - (void) strncpy(prevmsg, line, BUFSZ), prevmsg[BUFSZ - 1] = '\0'; + (void) strncpy(g.prevmsg, line, BUFSZ), g.prevmsg[BUFSZ - 1] = '\0'; if (msgtyp == MSGTYP_STOP) display_nhwindow(WIN_MESSAGE, TRUE); /* --more-- */ @@ -205,9 +199,9 @@ VA_DECL2(unsigned, pflags, const char *, line) { VA_START(line); VA_INIT(line, const char *); - pline_flags = pflags; + g.pline_flags = pflags; vpline(line, VA_ARGS); - pline_flags = 0; + g.pline_flags = 0; VA_END(); return; } @@ -218,9 +212,9 @@ VA_DECL(const char *, line) { VA_START(line); VA_INIT(line, const char *); - pline_flags = PLINE_NOREPEAT; + g.pline_flags = PLINE_NOREPEAT; vpline(line, VA_ARGS); - pline_flags = 0; + g.pline_flags = 0; VA_END(); return; } diff --git a/win/tty/topl.c b/win/tty/topl.c index 5233e1525..d0fadfb3e 100644 --- a/win/tty/topl.c +++ b/win/tty/topl.c @@ -648,9 +648,6 @@ boolean restoring_msghist; { static boolean initd = FALSE; int idx; -#ifdef DUMPLOG - extern unsigned saved_pline_index; /* pline.c */ -#endif if (restoring_msghist && !initd) { /* we're restoring history from the previous session, but new @@ -662,7 +659,7 @@ boolean restoring_msghist; initd = TRUE; #ifdef DUMPLOG /* this suffices; there's no need to scrub saved_pline[] pointers */ - saved_pline_index = 0; + g.saved_pline_index = 0; #endif }