X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fterminal-opts.c;h=da69afb508f86d9caf8477e25cce97bfcfd65e2d;hb=20818d7ae4bc4d4256d78683c9eb8d26416acd30;hp=121d89d5712a5bb127ff73f1778d5e498bb7a234;hpb=fe8dc2171009e90d2335f159d05f7e6660e24780;p=pspp diff --git a/src/ui/terminal/terminal-opts.c b/src/ui/terminal/terminal-opts.c index 121d89d571..da69afb508 100644 --- a/src/ui/terminal/terminal-opts.c +++ b/src/ui/terminal/terminal-opts.c @@ -20,6 +20,8 @@ #include #include +#include + #include "data/settings.h" #include "data/file-name.h" @@ -39,6 +41,7 @@ #include "output/msglog.h" #include "gl/error.h" +#include "gl/localcharset.h" #include "gl/progname.h" #include "gl/version-etc.h" #include "gl/xmemdup0.h" @@ -299,12 +302,33 @@ 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[]) { register_output_driver (to); if (!to->has_output_driver) { + if ((0 == strcmp (locale_charset (), "UTF-8")) + || + (term_is_utf8_xterm ()) ) + { + string_map_insert (&to->options, "box", "unicode"); + } + string_map_insert (&to->options, "output-file", "-"); string_map_insert (&to->options, "format", "txt"); register_output_driver (to);