Should prevent truncation on terminals over 254 characters wide.
void DrawTitle(void)
{
int rows, cols;
void DrawTitle(void)
{
int rows, cols;
#ifdef HAVE_NCURSES
attrset(A_REVERSE);
#ifdef HAVE_NCURSES
attrset(A_REVERSE);
standout();
#endif
getmaxyx(stdscr, rows, cols);
standout();
#endif
getmaxyx(stdscr, rows, cols);
sprintf(s, " " MSG_TITLE " %s", version_string);
sprintf(s, " " MSG_TITLE " %s", version_string);
- memset(&s[strlen(s)], ' ', 254 - strlen(s));
- if (cols > strlen(MSG_TITLE) + 2 + strlen(version_string) + 1 + strlen(MSG_TITLESUB))
+ const int titlelen = strlen(s);
+ memset(&s[titlelen], ' ', cols - strlen(MSG_TITLE)); // pad
+ if (cols > titlelen + 1 + strlen(MSG_TITLESUB))
memcpy(&s[cols - 1 - strlen(MSG_TITLESUB)], MSG_TITLESUB, sizeof(MSG_TITLESUB) - 1);
memcpy(&s[cols], "\0", 1);
mvaddstr(0, 0, s);
memcpy(&s[cols - 1 - strlen(MSG_TITLESUB)], MSG_TITLESUB, sizeof(MSG_TITLESUB) - 1);
memcpy(&s[cols], "\0", 1);
mvaddstr(0, 0, s);
standend(); //normal text
}
standend(); //normal text
}