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)
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);
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);