X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FExecutor.cc;h=a228c331b3a48537683bebe2002dc92797da0287;hb=8da6e83b001f0ae8383af7eb4b3e3a079178a777;hp=d6218d8c7972446987b1bd5e450fe29f91be2444;hpb=958bdb52c39fa39f4ef91cafd9628bcb4f85a03c;p=senf.git diff --git a/Utils/Console/Executor.cc b/Utils/Console/Executor.cc index d6218d8..a228c33 100644 --- a/Utils/Console/Executor.cc +++ b/Utils/Console/Executor.cc @@ -67,6 +67,7 @@ prefix_ std::string senf::console::Executor::cwdPath() { if (skipping()) return ""; + (void) cwd(); // ensure, cwd is live. return "/" + senf::stringJoin( senf::make_transform_range( boost::make_iterator_range(boost::next(cwd_.begin()), cwd_.end()), @@ -194,8 +195,10 @@ prefix_ void senf::console::Executor::ls(std::ostream & output, DirectoryNode::child_iterator const i_end (node.children().end()); for (; i != i_end; ++i) { output << i->first; - if (boost::dynamic_pointer_cast(i->second)) + if (i->second->isDirectory()) output << "/"; + else if (i->second->isLink()) + output << "@"; output << "\n"; } } @@ -257,7 +260,7 @@ senf::console::Executor::traverseNode(ParseCommandInfo::TokensRange const & path return *dir.back().lock(); } DirectoryNode & base (*dir.back().lock()); - if (tok == WordToken(".")) + if (tok == WordToken(".") || tok == NoneToken()) return base; std::string const & name (complete(base, tok.value())); if (policy_)