]> granicus.if.org Git - nethack/commitdiff
topl.c globals moved to instance_globals.
authorBart House <bart@barthouse.com>
Fri, 23 Nov 2018 21:13:28 +0000 (13:13 -0800)
committerBart House <bart@barthouse.com>
Fri, 23 Nov 2018 21:13:28 +0000 (13:13 -0800)
include/decl.h
src/cmd.c
src/decl.c
src/end.c
src/pline.c
win/tty/topl.c

index b41eab5df4fb70827c3f274e645a9bbe23eea37d..ce9fe2d8102048e0eb58fbdf6f973011c17cd73b 100644 (file)
@@ -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
index eba20ccd3ca1f758c7f86bf25963d41dd7460a61..dfe217335a61ac47075b76dc6be91cc69ec3e506 100644 (file)
--- 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) */
index d9db42982983d39e93091c4d9ab4550224d88793..7a407a9e2972445f26f0136c9b845fde7cb71f26 100644 (file)
@@ -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 */
 
index a433acc072ba6281f8058adaf1abff42882c4e5d..c2483500196851cf3c7302c42d1866679a2ce0cf 100644 (file)
--- 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);
index ebde8b145eb58f258a2c66f0edb3d7f29bc1c0de..d7acef096b5743de381a90f12e01aff718ed864c 100644 (file)
@@ -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;
 }
index 5233e1525e0198803786753c6320dc28eb399442..d0fadfb3eb3d04128c5ea4dc3e6bb92386b193ea 100644 (file)
@@ -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
     }