diff --git a/adb/client/line_printer.cpp b/adb/client/line_printer.cpp index 9758526c4..4dc2d2896 100644 --- a/adb/client/line_printer.cpp +++ b/adb/client/line_printer.cpp @@ -67,7 +67,11 @@ static void Out(const std::string& s) { void LinePrinter::Print(string to_print, LineType type) { if (!smart_terminal_) { - Out(to_print + "\n"); + if (type == LineType::INFO) { + info_line_ = to_print + "\n"; + } else { + Out(to_print + "\n"); + } return; } @@ -123,6 +127,11 @@ void LinePrinter::Print(string to_print, LineType type) { } void LinePrinter::KeepInfoLine() { - if (!have_blank_line_) Out("\n"); - have_blank_line_ = true; + if (smart_terminal_) { + if (!have_blank_line_) Out("\n"); + have_blank_line_ = true; + } else { + Out(info_line_); + info_line_.clear(); + } } diff --git a/adb/client/line_printer.h b/adb/client/line_printer.h index 42345e2d6..4c4c7c6fa 100644 --- a/adb/client/line_printer.h +++ b/adb/client/line_printer.h @@ -42,6 +42,9 @@ struct LinePrinter { /// Whether the caret is at the beginning of a blank line. bool have_blank_line_; + /// The last printed info line when printing to a dumb terminal. + std::string info_line_; + #ifdef _WIN32 void* console_; #endif