diff --git a/AK/LogStream.cpp b/AK/LogStream.cpp index 4d64179843..d0d29de11e 100644 --- a/AK/LogStream.cpp +++ b/AK/LogStream.cpp @@ -49,4 +49,25 @@ const LogStream& operator<<(const LogStream& stream, const TStyle& style) return stream; } +#ifdef USERLAND +static TriState got_process_name = TriState::Unknown; +static char process_name_buffer[256]; +#endif + +DebugLogStream dbg() +{ + DebugLogStream stream; +#ifdef USERLAND + if (got_process_name == TriState::Unknown) { + if (get_process_name(process_name_buffer, sizeof(process_name_buffer)) == 0) + got_process_name = TriState::True; + else + got_process_name = TriState::False; + } + if (got_process_name == TriState::True) + stream << TStyle(TStyle::Color::Brown, TStyle::Attribute::Bold) << process_name_buffer << '(' << getpid() << ")" << TStyle(TStyle::None) << ": "; +#endif + return stream; +} + } diff --git a/AK/LogStream.h b/AK/LogStream.h index 81480adfb6..ff685caa5c 100644 --- a/AK/LogStream.h +++ b/AK/LogStream.h @@ -3,8 +3,10 @@ #include #ifdef USERLAND -#include -#include +# include +# include +# include +# include #endif namespace AK { @@ -14,8 +16,7 @@ class StringView; class TStyle { public: - enum NoneTag { DummyValue }; - static NoneTag None; + enum NoneTag { None }; enum Color { Black = 0, @@ -98,11 +99,6 @@ public: } }; -inline DebugLogStream dbg() -{ - return {}; -} - inline const LogStream& operator<<(const LogStream& stream, const char* value) { int length = 0; @@ -131,6 +127,8 @@ inline const LogStream& operator<<(const LogStream& stream, bool value) return stream << (value ? "true" : "false"); } +DebugLogStream dbg(); + } using AK::dbg;