From: Ben Pfaff Date: Sun, 6 Jan 2019 18:38:50 +0000 (-0800) Subject: ascii: Always use Unicode boxes by default if appropriate. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=c60cba893280a910c4389617d5ae62d21d54a9c5 ascii: Always use Unicode boxes by default if appropriate. This moves code from the command-line UI so that additional users can benefit. Currently that's just the command-line UI anyway but others are coming. --- diff --git a/src/output/ascii.c b/src/output/ascii.c index 1df08c4067..4bad73aece 100644 --- a/src/output/ascii.c +++ b/src/output/ascii.c @@ -239,6 +239,19 @@ opt (struct output_driver *d, struct string_map *options, const char *key, return driver_option_get (d, options, key, default_value); } +/* Return true iff the terminal appears to be an xterm with + UTF-8 capabilities */ +static bool +term_is_utf8_xterm (void) +{ + const char *term = getenv ("TERM"); + const char *xterm_locale = getenv ("XTERM_LOCAL"); + return (term && xterm_locale + && !strcmp (term, "xterm") + && (strcasestr (xterm_locale, "utf8") + || strcasestr (xterm_locale, "utf-8"))); +} + static struct output_driver * ascii_create (struct file_handle *fh, enum settings_output_devices device_type, struct string_map *o) @@ -266,7 +279,13 @@ ascii_create (struct file_handle *fh, enum settings_output_devices device_type, parse_color (d, o, "background-color", "#FFFFFFFFFFFF", &a->bg); parse_color (d, o, "foreground-color", "#000000000000", &a->fg); #endif - box = parse_enum (opt (d, o, "box", "ascii"), + + const char *default_box = (!strcmp (fh_get_file_name (fh), "-") + && isatty (STDOUT_FILENO) + && (!strcmp (locale_charset (), "UTF-8") + || term_is_utf8_xterm ()) + ? "unicode" : "ascii"); + box = parse_enum (opt (d, o, "box", default_box), "ascii", BOX_ASCII, "unicode", BOX_UNICODE, NULL_SENTINEL); diff --git a/src/ui/terminal/terminal-opts.c b/src/ui/terminal/terminal-opts.c index cd58f81e94..284d2c9d61 100644 --- a/src/ui/terminal/terminal-opts.c +++ b/src/ui/terminal/terminal-opts.c @@ -275,33 +275,12 @@ 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);