From 44af1c78f3eb5921ac60c236824da8e073583d05 Mon Sep 17 00:00:00 2001 From: nhmall Date: Fri, 23 Nov 2018 22:16:45 -0500 Subject: [PATCH] Revert "topl.c globals moved to instance_globals." This reverts commit b384223e1be79a2f12c9db7b8097b3a51d3a96aa. --- include/decl.h | 8 -------- src/cmd.c | 5 +++-- src/decl.c | 8 -------- src/end.c | 6 ++++-- src/pline.c | 38 ++++++++++++++++++++++---------------- win/tty/topl.c | 5 ++++- 6 files changed, 33 insertions(+), 37 deletions(-) diff --git a/include/decl.h b/include/decl.h index ce9fe2d81..b41eab5df 100644 --- a/include/decl.h +++ b/include/decl.h @@ -464,14 +464,6 @@ 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 dfe217335..eba20ccd3 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -5771,7 +5771,8 @@ char def; { char res, qbuf[QBUFSZ]; #ifdef DUMPLOG - unsigned idx = g.saved_pline_index; + extern unsigned saved_pline_index; /* pline.c */ + unsigned idx = saved_pline_index; /* buffer to hold query+space+formatted_single_char_response */ char dumplog_buf[QBUFSZ + 1 + 15]; /* [QBUFSZ+1+7] should suffice */ #endif @@ -5788,7 +5789,7 @@ char def; } res = (*windowprocs.win_yn_function)(query, resp, def); #ifdef DUMPLOG - if (idx == g.saved_pline_index) { + if (idx == 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 7a407a9e2..d9db42982 100644 --- a/src/decl.c +++ b/src/decl.c @@ -348,14 +348,6 @@ 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 c24835001..a433acc07 100644 --- a/src/end.c +++ b/src/end.c @@ -679,12 +679,14 @@ 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) g.saved_pline_index; i < DUMPLOG_MSG_COUNT; + for (i = 0, j = (int) saved_pline_index; i < DUMPLOG_MSG_COUNT; ++i, j = (j + 1) % DUMPLOG_MSG_COUNT) { - strp = &g.saved_plines[j]; + strp = &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 d7acef096..ebde8b145 100644 --- a/src/pline.c +++ b/src/pline.c @@ -6,12 +6,18 @@ #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 @@ -25,8 +31,8 @@ const char *line; * The core should take responsibility for that and have * this share it. */ - unsigned indx = g.saved_pline_index; /* next slot to use */ - char *oldest = g.saved_plines[indx]; /* current content of that slot */ + unsigned indx = saved_pline_index; /* next slot to use */ + char *oldest = saved_plines[indx]; /* current content of that slot */ if (oldest && strlen(oldest) >= strlen(line)) { /* this buffer will gradually shrink until the 'else' is needed; @@ -35,9 +41,9 @@ const char *line; } else { if (oldest) free((genericptr_t) oldest); - g.saved_plines[indx] = dupstr(line); + saved_plines[indx] = dupstr(line); } - g.saved_pline_index = (indx + 1) % DUMPLOG_MSG_COUNT; + saved_pline_index = (indx + 1) % DUMPLOG_MSG_COUNT; } /* called during save (unlike the interface-specific message history, @@ -49,9 +55,9 @@ dumplogfreemessages() unsigned indx; for (indx = 0; indx < DUMPLOG_MSG_COUNT; ++indx) - if (g.saved_plines[indx]) - free((genericptr_t) g.saved_plines[indx]), g.saved_plines[indx] = 0; - g.saved_pline_index = 0; + if (saved_plines[indx]) + free((genericptr_t) saved_plines[indx]), saved_plines[indx] = 0; + saved_pline_index = 0; } #endif @@ -133,7 +139,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 ((g.pline_flags & SUPPRESS_HISTORY) == 0) + if ((pline_flags & SUPPRESS_HISTORY) == 0) dumplogmsg(line); #endif /* use raw_print() if we're called too early (or perhaps too late @@ -147,11 +153,11 @@ VA_DECL(const char *, line) } msgtyp = MSGTYP_NORMAL; - no_repeat = (g.pline_flags & PLINE_NOREPEAT) ? TRUE : FALSE; - if ((g.pline_flags & OVERRIDE_MSGTYPE) == 0) { + no_repeat = (pline_flags & PLINE_NOREPEAT) ? TRUE : FALSE; + if ((pline_flags & OVERRIDE_MSGTYPE) == 0) { msgtyp = msgtype_type(line, no_repeat); if (msgtyp == MSGTYP_NOSHOW - || (msgtyp == MSGTYP_NOREP && !strcmp(line, g.prevmsg))) + || (msgtyp == MSGTYP_NOREP && !strcmp(line, 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 @@ -175,7 +181,7 @@ VA_DECL(const char *, line) /* this gets cleared after every pline message */ iflags.last_msg = PLNMSG_UNKNOWN; - (void) strncpy(g.prevmsg, line, BUFSZ), g.prevmsg[BUFSZ - 1] = '\0'; + (void) strncpy(prevmsg, line, BUFSZ), prevmsg[BUFSZ - 1] = '\0'; if (msgtyp == MSGTYP_STOP) display_nhwindow(WIN_MESSAGE, TRUE); /* --more-- */ @@ -199,9 +205,9 @@ VA_DECL2(unsigned, pflags, const char *, line) { VA_START(line); VA_INIT(line, const char *); - g.pline_flags = pflags; + pline_flags = pflags; vpline(line, VA_ARGS); - g.pline_flags = 0; + pline_flags = 0; VA_END(); return; } @@ -212,9 +218,9 @@ VA_DECL(const char *, line) { VA_START(line); VA_INIT(line, const char *); - g.pline_flags = PLINE_NOREPEAT; + pline_flags = PLINE_NOREPEAT; vpline(line, VA_ARGS); - g.pline_flags = 0; + pline_flags = 0; VA_END(); return; } diff --git a/win/tty/topl.c b/win/tty/topl.c index d0fadfb3e..5233e1525 100644 --- a/win/tty/topl.c +++ b/win/tty/topl.c @@ -648,6 +648,9 @@ 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 @@ -659,7 +662,7 @@ boolean restoring_msghist; initd = TRUE; #ifdef DUMPLOG /* this suffices; there's no need to scrub saved_pline[] pointers */ - g.saved_pline_index = 0; + saved_pline_index = 0; #endif }