[openssh-commits] [openssh] branch master updated: special treatment for a more Turkic languages

git+noreply at mindrot.org git+noreply at mindrot.org
Thu Aug 20 11:20:38 AEST 2026


This is an automated email from the git hooks/post-receive script.

djm pushed a commit to branch master
in repository openssh.

The following commit(s) were added to refs/heads/master by this push:
     new 83e41449c special treatment for a more Turkic languages
83e41449c is described below

commit 83e41449cd9da56634203e3c231f025a32cfa909
Author: Damien Miller <djm at mindrot.org>
AuthorDate: Thu Aug 20 10:40:37 2026 +1000

    special treatment for a more Turkic languages
    
    Azerbaijani and Crimean Tatar also have the i/I problem.
    
    bz3991; ok dtucker
---
 utf8.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/utf8.c b/utf8.c
index 7f63b25ae..61403ebaa 100644
--- a/utf8.c
+++ b/utf8.c
@@ -316,11 +316,12 @@ mprintf(const char *fmt, ...)
 /*
  * Set up libc for multibyte output in the user's chosen locale.
  *
- * XXX: we are known to have problems with Turkish (i/I confusion) so we
- *      deliberately fall back to the C locale for now. Longer term we should
- *      always prefer to select C.[encoding] if possible, but there's no
- *      standardisation in locales between systems, so we'll need to survey
+ * XXX: we are known to have problems with Turkic languahes (i/I confusion) so
+ *      we deliberately fall back to the C locale for now. Longer term we
+ *      should always prefer to select C.[encoding] if possible, but there's
+ *      no standardisation in locales between systems, so we'll need to survey
  *      what's out there first.
+ * XXX: alternately runtime probe that toupper('i') != 'I' and vice-versa?
  */
 void
 msetlocale(void)
@@ -330,13 +331,15 @@ msetlocale(void)
 	int i;
 
 	/*
-	 * We can't yet cope with dotless/dotted I in Turkish locales,
+	 * We can't yet cope with dotless/dotted I in Turkic locales,
 	 * so fall back to the C locale for these.
 	 */
 	for (i = 0; vars[i] != NULL; i++) {
 		if ((cp = getenv(vars[i])) == NULL)
 			continue;
-		if (strncasecmp(cp, "TR", 2) != 0)
+		if (strncasecmp(cp, "tr", 2) != 0 &&
+		    strncasecmp(cp, "crh", 3) != 0 &&
+		    strncasecmp(cp, "az", 3) != 0)
 			break;
 		/*
 		 * If we're in a UTF-8 locale then prefer to use

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list