nl_langinfo(CODESET): Again return "US-ASCII" for C/POSIX
authorJohn Marino <draco@marino.st>
Tue, 10 Nov 2015 08:09:15 +0000 (09:09 +0100)
committerJohn Marino <draco@marino.st>
Tue, 10 Nov 2015 08:09:15 +0000 (09:09 +0100)
Reflecting that the "C"/"POSIX" locale has a different encoding (8-bit)
than "US-ASCII" (7-bit) resulted in immediate fallout on ports,
particularly on python.

Looking at glibc, nl_langinfo returns "ANSI_X3.4-1968" for both "C" and
"POSIX" locales, which is the Linux equivalent of US-ASCII.

Despite it being impossible to distinguish between C/POSIX and US-ASCII
with this change, it needs to be reverted for the sake of third-party
software compatibility.  (Remember nl_langinfo has no standard)

lib/libc/locale/nl_langinfo.c

index 7711f67..87f2175 100644 (file)
@@ -71,7 +71,7 @@ nl_langinfo_l(nl_item item, locale_t loc)
                else if (strcmp(s, "MSKanji") == 0)
                        ret = "SJIS";
                else if (strcmp(s, "NONE") == 0)
-                       ret = "POSIX";
+                       ret = "US-ASCII";
                else if (strncmp(s, "NONE:", 5) == 0)
                        ret = (char *)(s + 5);
                else