If isatty is available, no colors/pager for non-ttys

This commit is contained in:
John Wiegley 2009-10-29 00:23:57 -04:00
parent 52433e56e5
commit 2b2ffb7787
3 changed files with 24 additions and 3 deletions

View file

@ -352,7 +352,7 @@ AC_STRUCT_TM
#AC_FUNC_MKTIME
#AC_FUNC_STAT
#AC_FUNC_STRFTIME
AC_CHECK_FUNCS([access realpath getpwuid getpwnam])
AC_CHECK_FUNCS([access realpath getpwuid getpwnam isatty])
# Pepare the Makefiles
AC_CONFIG_FILES([Makefile po/Makefile.in intl/Makefile])

View file

@ -418,8 +418,14 @@ void global_scope_t::normalize_report_options(const string& verb)
report_t& rep(report());
if (! rep.HANDLED(no_color))
#ifdef HAVE_ISATTY
if (! rep.HANDLED(no_color) && isatty(STDOUT_FILENO))
rep.HANDLER(color).on_only(string("?normalize"));
if (rep.HANDLED(color) && ! isatty(STDOUT_FILENO))
rep.HANDLER(color).off();
if (rep.HANDLED(pager_) && ! isatty(STDOUT_FILENO))
rep.HANDLER(pager_).off();
#endif
// jww (2009-02-09): These globals are a hack, but hard to avoid.
item_t::use_effective_date = (rep.HANDLED(effective) &&

View file

@ -630,10 +630,11 @@ public:
OPTION(report_t, output_); // -o
#ifdef HAVE_ISATTY
OPTION__
(report_t, pager_,
CTOR(report_t, pager_) {
if (! std::getenv("PAGER")) {
if (! std::getenv("PAGER") && isatty(STDOUT_FILENO)) {
bool have_less = false;
if (exists(path("/opt/local/bin/less")) ||
exists(path("/usr/local/bin/less")) ||
@ -654,6 +655,20 @@ public:
else
option_t<report_t>::on_with(whence, text);
});
#else // HAVE_ISATTY
OPTION__
(report_t, pager_,
CTOR(report_t, pager_) {
}
virtual void on_with(const optional<string>& whence, const value_t& text) {
string cmd(text.to_string());
if (cmd == "" || cmd == "false" || cmd == "off" ||
cmd == "none" || cmd == "no" || cmd == "disable")
option_t<report_t>::off();
else
option_t<report_t>::on_with(whence, text);
});
#endif // HAVE_ISATTY
OPTION(report_t, payee_as_account);