From 7a14db9cfd3f81d77a1e4ecce67b4d2044ebc9c4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 14 Dec 2022 15:39:26 +0100 Subject: [PATCH] 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. --- src/basic/glyph-util.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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; -- 2.47.3