From f0713996b24bce73662ef3db15502376142a3254 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 15 Feb 2017 17:13:19 +0000 Subject: Revert "Refactor log channel registration mechanism" The change breaks on Windows and NetBSD bots. Revert while I investigate. llvm-svn: 295201 --- lldb/source/Commands/CommandObjectLog.cpp | 44 ++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 10 deletions(-) (limited to 'lldb/source/Commands') diff --git a/lldb/source/Commands/CommandObjectLog.cpp b/lldb/source/Commands/CommandObjectLog.cpp index c10f868dea4..6fbab08ac63 100644 --- a/lldb/source/Commands/CommandObjectLog.cpp +++ b/lldb/source/Commands/CommandObjectLog.cpp @@ -227,15 +227,25 @@ protected: return false; } + Log::Callbacks log_callbacks; + const std::string channel = args[0].ref; args.Shift(); // Shift off the channel - if (channel == "all") { - Log::DisableAllLogChannels(&result.GetErrorStream()); + if (Log::GetLogChannelCallbacks(ConstString(channel), log_callbacks)) { + log_callbacks.disable(args.GetConstArgumentVector(), + &result.GetErrorStream()); result.SetStatus(eReturnStatusSuccessFinishNoResult); + } else if (channel == "all") { + Log::DisableAllLogChannels(&result.GetErrorStream()); } else { - if (Log::DisableLogChannel(channel, args.GetConstArgumentVector(), - result.GetErrorStream())) + LogChannelSP log_channel_sp(LogChannel::FindPlugin(channel.data())); + if (log_channel_sp) { + log_channel_sp->Disable(args.GetConstArgumentVector(), + &result.GetErrorStream()); result.SetStatus(eReturnStatusSuccessFinishNoResult); + } else + result.AppendErrorWithFormat("Invalid log channel '%s'.\n", + channel.data()); } return result.Succeeded(); } @@ -274,12 +284,26 @@ protected: Log::ListAllLogChannels(&result.GetOutputStream()); result.SetStatus(eReturnStatusSuccessFinishResult); } else { - bool success = true; - for (const auto &entry : args.entries()) - success = success && Log::ListChannelCategories( - entry.ref, result.GetOutputStream()); - if (success) - result.SetStatus(eReturnStatusSuccessFinishResult); + for (auto &entry : args.entries()) { + Log::Callbacks log_callbacks; + + if (Log::GetLogChannelCallbacks(ConstString(entry.ref), + log_callbacks)) { + log_callbacks.list_categories(&result.GetOutputStream()); + result.SetStatus(eReturnStatusSuccessFinishResult); + } else if (entry.ref == "all") { + Log::ListAllLogChannels(&result.GetOutputStream()); + result.SetStatus(eReturnStatusSuccessFinishResult); + } else { + LogChannelSP log_channel_sp(LogChannel::FindPlugin(entry.c_str())); + if (log_channel_sp) { + log_channel_sp->ListCategories(&result.GetOutputStream()); + result.SetStatus(eReturnStatusSuccessFinishNoResult); + } else + result.AppendErrorWithFormat("Invalid log channel '%s'.\n", + entry.c_str()); + } + } } return result.Succeeded(); } -- cgit v1.2.3