tUse string length in characters when centering - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit c796087d647a1366c95d9d59553ae8808caa1430
(DIR) parent c3e33fb411e179566d42741cef23625b95d1d7cb
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Wed, 9 Dec 2020 15:51:37 -0800
Use string length in characters when centering
Use the real number of characters in the string when
calculating its length for displaying a centered string,
rather than the number of bytes, which can be different
when using UTF-8 encoding. Relates #54.
Diffstat:
M src/curses_client/curses_client.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
---
(DIR) diff --git a/src/curses_client/curses_client.c b/src/curses_client/curses_client.c
t@@ -236,6 +236,12 @@ static void LogMessage(const gchar *log_domain, GLogLevelFlags log_level,
clear_bottom();
}
+/* Return length of string in characters (not bytes, like strlen) */
+static int strcharlen(const char *str)
+{
+ return LocaleIsUTF8 ? g_utf8_strlen(str, -1) : strlen(str);
+}
+
/*
* Displays a string, horizontally centred on the given row
*/
t@@ -243,7 +249,7 @@ static void mvaddcentstr(const int row, const gchar *str)
{
guint col, len;
- len = strlen(str);
+ len = strcharlen(str);
col = (len > (guint)Width ? 0 : ((guint)Width - len) / 2);
mvaddstr(row, col, str);
}
t@@ -256,7 +262,7 @@ static void mvaddcentstr(const int row, const gchar *str)
static void mvaddfixwidstr(const int row, const int col, const int wid,
const gchar *str, const int attrs)
{
- int strwid = str ? strlen(str) : 0;
+ int strwid = str ? strcharlen(str) : 0;
int strind;
strwid = MIN(strwid, wid);
t@@ -2247,12 +2253,7 @@ static char *pad_name(const char *name, guint pad_len)
{
/* 40 character blank string (must be longer than max value of pad_len) */
static char *pad = " ";
- int slen;
- if (LocaleIsUTF8) {
- slen = g_utf8_strlen(name, -1);
- } else {
- slen = strlen(name);
- }
+ int slen = strcharlen(name);
if (slen > pad_len || slen > 40) {
return "";
} else {