From 858cab0d05698bc5033b678a5865839ee5d73091 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 21 Apr 2013 21:44:24 +0200 Subject: [PATCH] Widen the criteria for assuming the terminal is utf capable. Assume the terminal is UTF-8 capable if the TERM and XTERM_LOCALE environment variables seem to suggest that. --- src/ui/terminal/terminal-opts.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/ui/terminal/terminal-opts.c b/src/ui/terminal/terminal-opts.c index 95007a0cb4..45c503eeca 100644 --- a/src/ui/terminal/terminal-opts.c +++ b/src/ui/terminal/terminal-opts.c @@ -302,11 +302,30 @@ terminal_opts_init (struct argv_parser *ap, return to; } +/* Return true iff the terminal appears to be an xterm with + UTF-8 capabilities */ +static bool +term_is_utf8_xterm (void) +{ + char *s = NULL; + + if ( (s = getenv ("TERM")) && (0 == strcmp ("xterm", s)) ) + if ( (s = getenv ("XTERM_LOCALE")) ) + return strcasestr (s, "utf8") || strcasestr (s, "utf-8"); + + return false; +} + void terminal_opts_done (struct terminal_opts *to, int argc, char *argv[]) { - if (0 == strcmp (locale_charset (), "UTF-8")) - string_map_insert (&to->options, "box", "unicode"); + if ((0 == strcmp (locale_charset (), "UTF-8")) + || + (term_is_utf8_xterm ()) ) + { + string_map_insert (&to->options, "box", "unicode"); + } + register_output_driver (to); if (!to->has_output_driver) { -- 2.30.2