From: Zbigniew Jędrzejewski-Szmek Date: Wed, 14 Dec 2022 14:39:26 +0000 (+0100) Subject: basic: do not output emojis if not on a proper terminal X-Git-Tag: v253-rc1~280 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7a14db9cfd3f81d77a1e4ecce67b4d2044ebc9c4;p=thirdparty%2Fsystemd.git basic: do not output emojis if not on a proper terminal $TERM would generally be set if we're connected to a proper graphical terminal emulator. In all other cases, in particular if $TERM is not set, we almost certainly are not connected to something that can output emojis. In particular the text console is unlikely to ever do it correctly. So let's invert the check, and only write emojis if $TERM is set. Fixes #25521. --- diff --git a/src/basic/glyph-util.c b/src/basic/glyph-util.c index de1224f04fc..2833125ed99 100644 --- a/src/basic/glyph-util.c +++ b/src/basic/glyph-util.c @@ -9,15 +9,15 @@ bool emoji_enabled(void) { static int cached_emoji_enabled = -1; if (cached_emoji_enabled < 0) { - int val; - - val = getenv_bool("SYSTEMD_EMOJI"); - if (val < 0) - cached_emoji_enabled = - is_locale_utf8() && - !STRPTR_IN_SET(getenv("TERM"), "dumb", "linux"); - else - cached_emoji_enabled = val; + int val = getenv_bool("SYSTEMD_EMOJI"); + if (val >= 0) + return (cached_emoji_enabled = val); + + const char *term = getenv("TERM"); + if (!term || STR_IN_SET(term, "dumb", "linux")) + return (cached_emoji_enabled = false); + + cached_emoji_enabled = is_locale_utf8(); } return cached_emoji_enabled;