Widen the criteria for assuming the terminal is utf capable. 20130422010503/pspp
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 21 Apr 2013 19:44:24 +0000 (21:44 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 21 Apr 2013 19:44:24 +0000 (21:44 +0200)
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

index 95007a0cb406a362d1521526634f66ba10e63719..45c503eecacc596c733a780ba7e754e5270c1e14 100644 (file)
@@ -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)
     {