X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Flog.cc;fp=src%2Fmoof%2Flog.cc;h=f9a3ad97d3c397b4a21e33b4793ca8bcea021622;hp=017ce36b2209fe087a79ea43010d9fc2f47f3986;hb=6f1b787a10d8ab1a3117a4b8c004dd2d90599608;hpb=c143f7e806766a73cd69dc6e084e977641019ce6 diff --git a/src/moof/log.cc b/src/moof/log.cc index 017ce36..f9a3ad9 100644 --- a/src/moof/log.cc +++ b/src/moof/log.cc @@ -11,6 +11,13 @@ #include +#if !defined(__WIN32) +#include +#else +int isatty(int dummy) { return 0; } +#endif + + #include "log.hh" #include "script.hh" @@ -32,14 +39,49 @@ enum log::level log::level() } -std::ostream& log(std::clog); +log::log(enum level level) : + level_(level) +{ + if (isatty(1) == 0) + switch (level) + { + case log::error: prefix_ = " error: "; break; + case log::warning: prefix_ = "warning: "; break; + case log::info: prefix_ = " info: "; break; + case log::none: break; + } + else + switch (level) + { + case log::error: prefix_ = "\033[101m error: "; break; + case log::warning: prefix_ = "\033[103mwarning: "; break; + case log::info: prefix_ = " info: "; break; + case log::none: break; + } +} + +std::ostream& operator << (class log& log, log::endl_ endl) +{ + if (log::global_level_ < log.level_) return null_log; + if (isatty(1) == 0) return moof::log << std::endl; + else return moof::log << "\033[0m" << std::endl; +} + +std::ostream& operator << (std::ostream& stream, log::endl_ endl) +{ + if (isatty(1) == 0) return stream << std::endl; + else return stream << "\033[0m" << std::endl; +} + + +std::ostream& log(std::cout); static std::ofstream null_log_; std::ostream& null_log(null_log_); -class log log_error( log::error, " error: "); -class log log_warning(log::warning, "warning: "); -class log log_info( log::info, " info: "); +class log log_error( log::error); +class log log_warning(log::warning); +class log log_info( log::info); static int log_script(script& script, enum log::level level)