X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FExecutor.cc;h=4d9b2f935dcb3145f58f90322bab0aee543a6aae;hb=1863c038d0400159ce49b851a5b81c2ce698c684;hp=da8aa49e32370985836df31567f047a526cf9dd8;hpb=706fe01937df3649e40aed24b75c3d28fc4fa007;p=senf.git diff --git a/Console/Executor.cc b/Console/Executor.cc index da8aa49..4d9b2f9 100644 --- a/Console/Executor.cc +++ b/Console/Executor.cc @@ -60,8 +60,11 @@ prefix_ void senf::console::Executor::execute(std::ostream & output, GenericNode & node ( traverseCommand(command.commandPath()) ); DirectoryNode * dir ( dynamic_cast(&node) ); if ( dir ) { - oldCwd_ = cwd_; - cwd_ = dir->thisptr(); + if (autocd_ && command.arguments().empty()) { + oldCwd_ = cwd_; + cwd_ = dir->thisptr(); + } else + throw InvalidCommandException(); } else { dynamic_cast(node)(output, command); } @@ -144,7 +147,8 @@ senf::console::Executor::traverseNode(ParseCommandInfo::argument_value_type cons return cwd().traverse( boost::make_iterator_range( boost::make_transform_iterator(path.begin(), TraverseTokens()), - boost::make_transform_iterator(path.end(), TraverseTokens()))); + boost::make_transform_iterator(path.end(), TraverseTokens())), + autocomplete_); } catch (std::bad_cast &) { throw InvalidPathException(); @@ -158,7 +162,7 @@ prefix_ senf::console::GenericNode & senf::console::Executor::traverseCommand(ParseCommandInfo::CommandPathRange const & path) { try { - return cwd().traverse(path); + return cwd().traverse(path, autocomplete_); } catch (std::bad_cast &) { throw InvalidPathException();