{
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
}
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) */
{
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);
#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
* 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;
} 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,
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
* 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
}
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
/* 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-- */
{
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;
}
{
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;
}