X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FServer.cc;h=66564bb019487f2e28c5bbf1dc60de831f5ccb3c;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=41475c29ec35c3d2ec59f902eea12791d342e751;hpb=41eff772147b6df1961d9029ba6815b553b4f81d;p=senf.git diff --git a/Utils/Console/Server.cc b/Utils/Console/Server.cc index 41475c2..66564bb 100644 --- a/Utils/Console/Server.cc +++ b/Utils/Console/Server.cc @@ -180,6 +180,12 @@ prefix_ void senf::console::detail::DumbClientReader::v_write(std::string const handle().write(data); } +prefix_ unsigned senf::console::detail::DumbClientReader::v_width() + const +{ + return 80; +} + /////////////////////////////////////////////////////////////////////////// // senf::console::detail::NoninteractiveClientReader @@ -202,6 +208,12 @@ prefix_ void senf::console::detail::NoninteractiveClientReader::v_write(std::str handle().write(data); } +prefix_ unsigned senf::console::detail::NoninteractiveClientReader::v_width() + const +{ + return 80; +} + prefix_ void senf::console::detail::NoninteractiveClientReader::newData(int event) { @@ -272,11 +284,6 @@ prefix_ void senf::console::Client::setNoninteractive() prefix_ std::string::size_type senf::console::Client::handleInput(std::string data, bool incremental) { - if (data.empty() && ! incremental) - data = lastCommand_; - else - lastCommand_ = data; - std::string::size_type n (data.size()); try { @@ -323,6 +330,17 @@ prefix_ void senf::console::Client::v_write(senf::log::time_type timestamp, reader_->enablePrompt(); } +prefix_ unsigned senf::console::Client::getWidth(std::ostream & os, unsigned defaultWidth, + unsigned minWidth) +{ + unsigned rv (defaultWidth); + try { + rv = get(os).width(); + } + catch (std::bad_cast &) {} + return rv < minWidth ? defaultWidth : rv; +} + /////////////////////////////////////////////////////////////////////////// // senf::console::Client::SysBacktrace @@ -336,7 +354,7 @@ prefix_ void senf::console::Client::SysBacktrace::backtrace(std::ostream & os) { Client & client (Client::get(os)); if (client.backtrace().empty()) - os << "(no backtrace)"; + os << "(no backtrace)\n"; else os << client.backtrace(); }