mirror of
https://github.com/systemd/systemd.git
synced 2025-03-10 16:58:28 +03:00
util.c:is_locale_utf8(): check, if "C" was set on purpose
If you have a ASCII only terminal, there is no way to set the charmap to ANSI_X3.4-1968, other than using LC_CTYPE=C. We don't want to assume a UTF-8 capable terminal in this case and only do so, if LANG, LC_ALL and LC_CTYPE are unset.
This commit is contained in:
parent
e7256c5c13
commit
6cf2f1d94d
@ -5420,20 +5420,24 @@ bool is_locale_utf8(void) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* For LC_CTYPE=="C" return true,
|
||||
* because CTYPE is effectly unset and
|
||||
* everything defaults to UTF-8 nowadays. */
|
||||
|
||||
/* For LC_CTYPE=="C" return true, because CTYPE is effectly
|
||||
* unset and everything can do to UTF-8 nowadays. */
|
||||
set = setlocale(LC_CTYPE, NULL);
|
||||
if (!set) {
|
||||
cached_answer = true;
|
||||
goto out;
|
||||
}
|
||||
|
||||
cached_answer = streq(set, "C");
|
||||
/* Check result, but ignore the result if C was set
|
||||
* explicitly. */
|
||||
cached_answer =
|
||||
streq(set, "C") &&
|
||||
!getenv("LC_ALL") &&
|
||||
!getenv("LC_CTYPE") &&
|
||||
!getenv("LANG");
|
||||
|
||||
out:
|
||||
return (bool)cached_answer;
|
||||
return (bool) cached_answer;
|
||||
}
|
||||
|
||||
const char *draw_special_char(DrawSpecialChar ch) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user