Fix error if stdout not available.

feature-httpd
XMRig 2017-08-17 18:54:41 +03:00
parent 168b1aac2f
commit 60224ccd23
2 changed files with 19 additions and 1 deletions

View File

@ -40,7 +40,10 @@
ConsoleLog::ConsoleLog(bool colors) :
m_colors(colors)
{
uv_tty_init(uv_default_loop(), &m_tty, 1, 0);
if (uv_tty_init(uv_default_loop(), &m_tty, 1, 0) < 0) {
return;
}
uv_tty_set_mode(&m_tty, UV_TTY_MODE_NORMAL);
# ifdef WIN32
@ -58,6 +61,10 @@ ConsoleLog::ConsoleLog(bool colors) :
void ConsoleLog::message(int level, const char* fmt, va_list args)
{
if (!isWritable()) {
return;
}
time_t now = time(nullptr);
tm stime;
@ -112,6 +119,10 @@ void ConsoleLog::message(int level, const char* fmt, va_list args)
void ConsoleLog::text(const char* fmt, va_list args)
{
if (!isWritable()) {
return;
}
char *buf = new char[64 + strlen(fmt) + 2];
sprintf(buf, "%s%s\n", fmt, m_colors ? Log::kCL_N : "");
@ -120,6 +131,12 @@ void ConsoleLog::text(const char* fmt, va_list args)
}
bool ConsoleLog::isWritable() const
{
return uv_is_writable(reinterpret_cast<const uv_stream_t*>(&m_tty)) == 1 && uv_guess_handle(1) == UV_TTY;
}
void ConsoleLog::print(char *fmt, va_list args)
{
vsnprintf(m_buf, sizeof(m_buf) - 1, fmt, args);

View File

@ -40,6 +40,7 @@ public:
void text(const char *fmt, va_list args) override;
private:
bool isWritable() const;
void print(char *fmt, va_list args);
bool m_colors;