diff options
-rw-r--r-- | docs/ENVIRONMENT.md | 6 | ||||
-rw-r--r-- | src/basic/locale-util.c | 10 | ||||
-rwxr-xr-x | test/units/testsuite-58.sh | 19 |
3 files changed, 26 insertions, 9 deletions
diff --git a/docs/ENVIRONMENT.md b/docs/ENVIRONMENT.md index ab3add6031..61ad075085 100644 --- a/docs/ENVIRONMENT.md +++ b/docs/ENVIRONMENT.md @@ -85,6 +85,12 @@ All tools: * `$SYSTEMD_MEMPOOL=0` — if set, the internal memory caching logic employed by hash tables is turned off, and libc `malloc()` is used for all allocations. +* `$SYSTEMD_UTF8=` — takes a boolean value, and overrides whether to generate + non-ASCII special glyphs at various places (i.e. "→" instead of + "->"). Usually this is deterined automatically, based on $LC_CTYPE, but in + scenarios where locale definitions are not installed it might make sense to + override this check explicitly. + * `$SYSTEMD_EMOJI=0` — if set, tools such as `systemd-analyze security` will not output graphical smiley emojis, but ASCII alternatives instead. Note that this only controls use of Unicode emoji glyphs, and has no effect on other diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c index 2f486a4d92..40c6e46ab8 100644 --- a/src/basic/locale-util.c +++ b/src/basic/locale-util.c @@ -286,8 +286,9 @@ void init_gettext(void) { } bool is_locale_utf8(void) { - const char *set; static int cached_answer = -1; + const char *set; + int r; /* Note that we default to 'true' here, since today UTF8 is * pretty much supported everywhere. */ @@ -295,6 +296,13 @@ bool is_locale_utf8(void) { if (cached_answer >= 0) goto out; + r = getenv_bool_secure("SYSTEMD_UTF8"); + if (r >= 0) { + cached_answer = r; + goto out; + } else if (r != -ENXIO) + log_debug_errno(r, "Failed to parse $SYSTEMD_UTF8, ignoring: %m"); + if (!setlocale(LC_ALL, "")) { cached_answer = true; goto out; diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh index f41069ee04..8787a24c0e 100755 --- a/test/units/testsuite-58.sh +++ b/test/units/testsuite-58.sh @@ -14,6 +14,9 @@ fi export SYSTEMD_LOG_LEVEL=debug export PAGER=cat +# Disable use of special glyphs such as → +export SYSTEMD_UTF8=0 + seed=750b6cd5c4ae4012a15e7be3c29e6a47 if ! systemd-detect-virt --quiet --container; then @@ -327,7 +330,7 @@ EOF output=$(systemd-repart --definitions="$defs" --empty=create --size=100M --json=pretty "$imgs/zzz") - diff <(echo "$output") - <<EOF + diff -u <(echo "$output") - <<EOF [ { "type" : "swap", @@ -338,10 +341,10 @@ EOF "offset" : 1048576, "old_size" : 0, "raw_size" : 33554432, - "size" : "→ 32.0M", + "size" : "-> 32.0M", "old_padding" : 0, "raw_padding" : 0, - "padding" : "→ 0B", + "padding" : "-> 0B", "activity" : "create", "drop-in_files" : [ "$defs/root.conf.d/override1.conf", @@ -382,7 +385,7 @@ EOF output=$(systemd-repart --definitions="$defs/1" --definitions="$defs/2" --empty=create --size=100M --json=pretty "$imgs/zzz") - diff <(echo "$output") - <<EOF + diff -u <(echo "$output") - <<EOF [ { "type" : "swap", @@ -393,10 +396,10 @@ EOF "offset" : 1048576, "old_size" : 0, "raw_size" : 33554432, - "size" : "→ 32.0M", + "size" : "-> 32.0M", "old_padding" : 0, "raw_padding" : 0, - "padding" : "→ 0B", + "padding" : "-> 0B", "activity" : "create" }, { @@ -408,10 +411,10 @@ EOF "offset" : 34603008, "old_size" : 0, "raw_size" : 33554432, - "size" : "→ 32.0M", + "size" : "-> 32.0M", "old_padding" : 0, "raw_padding" : 0, - "padding" : "→ 0B", + "padding" : "-> 0B", "activity" : "create" } ] |