X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FLineEditor.cc;h=df9d0652fd0a20b6964ccc032ad3b8e51108427e;hb=9a4ab28bb53bc1a7719141a2263282d4cf73b258;hp=bf4d86936ca0d940b7a8c10c6db6d2dd2e027b29;hpb=2e64ec3584f231af8c4aab0b780046b355ff64ae;p=senf.git diff --git a/Utils/Console/LineEditor.cc b/Utils/Console/LineEditor.cc index bf4d869..df9d065 100644 --- a/Utils/Console/LineEditor.cc +++ b/Utils/Console/LineEditor.cc @@ -65,6 +65,12 @@ prefix_ void senf::console::detail::LineEditorSwitcher::v_write(std::string cons reader_->write(data); } +prefix_ unsigned senf::console::detail::LineEditorSwitcher::v_width() + const +{ + return reader_->width(); +} + /////////////////////////////////////////////////////////////////////////// // senf::console::detail::LineEditorClientReader @@ -109,6 +115,12 @@ prefix_ void senf::console::detail::LineEditorClientReader::v_write(std::string BaseTelnetProtocol::write(data); } +prefix_ unsigned senf::console::detail::LineEditorClientReader::v_width() + const +{ + return editor_.width(); +} + prefix_ void senf::console::detail::LineEditorClientReader::executeLine(std::string const & text) { @@ -145,7 +157,7 @@ completePath(term::LineEditor & editor, unsigned b, unsigned e, if (path.empty()) { DirectoryNode::ChildrenRange cs (client().cwd().children()); for (DirectoryNode::ChildrenRange::iterator i (cs.begin()); i != cs.end(); ++i) - completions.push_back(i->first + (i->second->isDirectory() ? "/" : "")); + completions.push_back(i->first + (i->second->followLink().isDirectory() ? "/" : " ")); return; } @@ -180,10 +192,10 @@ completePath(term::LineEditor & editor, unsigned b, unsigned e, else { DirectoryNode::ChildrenRange cs (dir->completions(i->value())); if (has_one_elt(cs)) { - GenericNode * node (cs.begin()->second.get()); - if (!node->isDirectory()) + GenericNode & node (cs.begin()->second->followLink()); + if (!node.isDirectory()) return; - dir = static_cast(node); + dir = static_cast(&node); basePath += cs.begin()->first + "/"; } else @@ -193,7 +205,8 @@ completePath(term::LineEditor & editor, unsigned b, unsigned e, DirectoryNode::ChildrenRange cs (dir->completions(i->value())); for (DirectoryNode::ChildrenRange::iterator j (cs.begin()); j != cs.end(); ++j) - completions.push_back(basePath + j->first + (j->second->isDirectory() ? "/" : "")); + completions.push_back(basePath + j->first + + (j->second->followLink().isDirectory() ? "/" : " ")); } ///////////////////////////////cc.e////////////////////////////////////////