diff --git a/include/extern.h b/include/extern.h index 3e58ee565..70ce04b31 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1662,7 +1662,7 @@ E boolean FDECL(add_menu_coloring, (char *)); E boolean FDECL(get_menu_coloring, (char *, int *, int *)); E void NDECL(free_menu_coloring); E boolean FDECL(msgtype_parse_add, (char *)); -E int FDECL(msgtype_type, (const char *)); +E int FDECL(msgtype_type, (const char *, BOOLEAN_P)); E void NDECL(msgtype_free); /* ### pager.c ### */ diff --git a/src/options.c b/src/options.c index 11a26c074..f706d2c0a 100644 --- a/src/options.c +++ b/src/options.c @@ -1455,8 +1455,9 @@ int idx; /* 0 .. */ } int -msgtype_type(msg) +msgtype_type(msg, norepeat) const char *msg; +boolean norepeat; /* called from Norep(via pline) */ { struct plinemsg_type *tmp = plinemsg_types; @@ -1465,7 +1466,7 @@ const char *msg; return tmp->msgtype; tmp = tmp->next; } - return MSGTYP_NORMAL; + return norepeat ? MSGTYP_NOREP : MSGTYP_NORMAL; } int diff --git a/src/pline.c b/src/pline.c index ce4b60702..4ada9bff7 100644 --- a/src/pline.c +++ b/src/pline.c @@ -83,22 +83,22 @@ VA_DECL(const char *, line) iflags.last_msg = PLNMSG_UNKNOWN; return; } -#ifndef MAC - if (no_repeat && !strcmp(line, toplines)) + + msgtyp = msgtype_type(line, no_repeat); + if (msgtyp == MSGTYP_NOSHOW + || (msgtyp == MSGTYP_NOREP && !strcmp(line, prevmsg))) return; -#endif /* MAC */ if (vision_full_recalc) vision_recalc(0); if (u.ux) flush_screen(1); /* %% */ - msgtyp = msgtype_type(line); - if (msgtyp == MSGTYP_NOSHOW) return; - if (msgtyp == MSGTYP_NOREP && !strcmp(line, prevmsg)) return; + putstr(WIN_MESSAGE, 0, line); /* this gets cleared after every pline message */ iflags.last_msg = PLNMSG_UNKNOWN; - strncpy(prevmsg, line, BUFSZ); - if (msgtyp == MSGTYP_STOP) display_nhwindow(WIN_MESSAGE, TRUE); /* --more-- */ + strncpy(prevmsg, line, BUFSZ), prevmsg[BUFSZ - 1] = '\0'; + if (msgtyp == MSGTYP_STOP) + display_nhwindow(WIN_MESSAGE, TRUE); /* --more-- */ #if !(defined(USE_STDARG) || defined(USE_VARARGS)) /* provide closing brace for the nested block