From 81bf1e70c7b1f71bda7d5e88531d883fc48b3516 Mon Sep 17 00:00:00 2001 From: Fabian Greffrath Date: Wed, 14 May 2025 06:33:13 +0200 Subject: [PATCH] break quit messages after at most 42 chars (#2267) if they do not contain explicit line breaks themselves Fixes #2263 --- src/mn_menu.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/mn_menu.c b/src/mn_menu.c index 44d42cb8..1654905b 100644 --- a/src/mn_menu.c +++ b/src/mn_menu.c @@ -2255,6 +2255,36 @@ void M_ResetAutoSave(void) // M_Init // +#define MAX_STRLEN 42 + +static void AddLineBreaks(char *string) +{ + char *start = string; + char *p = start; + + while (strlen(p) > MAX_STRLEN) + { + start = p; + p += MAX_STRLEN; + + do + { + if (*p == ' ') + { + *p++ = '\n'; + break; + } + } while (--p > start); + + if (p == start) + { + break; + } + } +} + +#undef MAX_STRLEN + void M_Init(void) { MN_InitDefaults(); // killough 11/98 @@ -2360,6 +2390,16 @@ void M_Init(void) free(replace); *endmsg[9] = string; } + + for (int i = 0; i < NUM_QUITMESSAGES; i++) + { + char *const msg = *endmsg[i]; + + if (strchr(msg, '\n') == NULL) + { + AddLineBreaks(*endmsg[i]); + } + } } /////////////////////////////