tUse string length in characters when centering - vaccinewars - be a doctor and… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c796087d647a1366c95d9d59553ae8808caa1430 | |
parent c3e33fb411e179566d42741cef23625b95d1d7cb | |
Author: Ben Webb <[email protected]> | |
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(-) | |
--- | |
diff --git a/src/curses_client/curses_client.c b/src/curses_client/curses_clien… | |
t@@ -236,6 +236,12 @@ static void LogMessage(const gchar *log_domain, GLogLevel… | |
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 { |