tDon't assume key is a single byte - 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 66759ed944ee03eb776cc2609172e3e920dfc668
 (DIR) parent 7a3ecb9c6b642383aa48123c42911a8f5e8b39c3
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Sat,  2 Jan 2021 21:38:57 -0800
       
       Don't assume key is a single byte
       
       In UTF-8 locales the key may be several bytes,
       so look for the terminating colon instead.
       
       Diffstat:
         M src/curses_client/curses_client.c   |      15 +++++++++------
       
       1 file changed, 9 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/src/curses_client/curses_client.c b/src/curses_client/curses_client.c
       t@@ -1591,8 +1591,9 @@ void Bank(Player *Play)
        
        /* 
         * Waits for keyboard input; will only accept a key listed in the
       - * "allowed" string. This string may have been translated; thus
       - * the "orig_allowed" string contains the untranslated keys.
       + * "allowed" string (in the locale encoding, usually UTF-8). This string
       + * may have been translated; thus the "orig_allowed" string (in ASCII)
       + * contains the untranslated keys.
         * Returns the untranslated key corresponding to the key pressed
         * (e.g. if allowed[2] is pressed, orig_allowed[2] is returned)
         * Case insensitive. If "AllowOther" is TRUE, keys other than the
       t@@ -1605,7 +1606,7 @@ int GetKey(char *allowed, char *orig_allowed, gboolean AllowOther,
                   gboolean PrintAllowed, gboolean ExpandOut)
        {
          int ch;
       -  guint AllowInd, WordInd, i;
       +  guint AllowInd, WordInd;
        
          /* Expansions of the single-letter keypresses for the benefit of the
             user. i.e. "Yes" is printed for the key "Y" etc. You should indicate
       t@@ -1634,9 +1635,11 @@ int GetKey(char *allowed, char *orig_allowed, gboolean AllowOther,
                WordInd++;
        
              if (ExpandOut && WordInd < numWords) {
       -        trWord = _(Words[WordInd]);
       -        for (i = 2; i < strlen(trWord); i++)
       -          addch((guchar)trWord[i] | TextAttr);
       +        trWord = strchr(_(Words[WordInd]), ':');
       +        /* Print everything after the colon */
       +        if (*trWord) trWord++;
       +        attrset(TextAttr);
       +        addstr(trWord);
              } else
                addch((guchar)allowed[AllowInd] | TextAttr);
            }