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 {